我的代码不起作用。 我试图简单地将命令保存到具有间接变量的变量。
执行后我得到:
*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_home*
中的内容时
eval echo "$rsync_home"
输出是正确的命令:
rsync -avz --delete /home/ /media/michal/something/home/
为什么这个间接变量不应该像变量那样显示在变量中,而是$destL
?
答案 0 :(得分:1)
停止使用eval
,并定义一个功能:
rsync_home () {
rsync -avz -delete /home "$1"/home
}
然后致电
rsync_home /media/user/something