间接变量bash中的命令

间接变量bash中的命令,bash,Bash,我下面的代码不起作用。 我试图简单地将命令保存到带有间接变量的变量中 执行后,我得到: *destL="/media/user/something" _destL=destL rsync_home="rsync -avz --delete /home/ \$$_destL$home" eval echo `$rsync_home`* 这项研究的结果是: *rsync: mkdir "/home/user/place where my script is located/$destL/hom

我下面的代码不起作用。 我试图简单地将命令保存到带有间接变量的变量中

执行后,我得到:

*destL="/media/user/something" _destL=destL

rsync_home="rsync -avz --delete /home/ \$$_destL$home"

eval echo `$rsync_home`*
这项研究的结果是:

*rsync: mkdir "/home/user/place where my script is located/$destL/home" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(674) [Receiver=3.1.0]
sending incremental file list*
但当我试图用命令检查
*$rsync\u home*
中的内容时
eval echo“$rsync\u home”

输出是正确的命令:

rsync -avz --delete /home/ /media/michal/something/home/

为什么此间接变量未按其应显示在变量中,而是显示为
$destL

停止使用
eval
,并定义一个函数:

rsync_home () {
  rsync -avz -delete /home "$1"/home
}
然后打电话

rsync_home /media/user/something

输出正确吗????请参阅
../home//media…
。可能尝试对变量
${!\u destL}
使用较新的语法。如果手动运行命令,该命令是否有效?I'L'I,使用较新的语法,错误为:./backup.sh:错误的替换信号acio,是的,手动命令有效。。。