如何在shell脚本中的SCP命令中附加变量?

时间:2013-12-17 05:39:47

标签: linux bash shell unix scp

下面是我的shell脚本,我试图在if语句块中的scp调用中附加$元素。

for element in ${x[$key]}; do   # no quotes here
    printf "%s\t%s\n" "$key" "$element"
    if [ $key -eq 0 ]
    then
        scp david@machineB:/data/be_t1_snapshot/20131215/t1_$element_5.data /data01/primary/.
    fi    
done

但每当我运行上面的shell脚本时,我总是这样 -

scp david@machineB:/data/be_t1_snapshot/20131215/t1_.data No such file or directory

当我仔细查看上面的错误消息时,上面的scp语句不正确,因为它应该是 -

scp david@machineB:/data/be_t1_snapshot/20131215/t1_0_5.data /data01/primary/.

$element的值应该替换为0,但不知何故,我的上述附加逻辑无效。我在上面的scp命令中添加$ element的方式有什么不对吗

1 个答案:

答案 0 :(得分:4)

尝试t1_${element}_5.data

scp david@machineB:/data/be_t1_snapshot/20131215/t1_${element}_5.data /data01/primary/.

当您使用t1_$element_5.data时,bash会将$element_5替换为其值, 你没有定义$element_5,所以你得到了

  

t1_.data没有这样的文件或目录