我正在尝试创建一个运行所有可用计算机的脚本,并将一些数据保存到我的主文件夹中。
machines=`cat $OAR_FILE_NODES | uniq`
for machine in ${machines}
do
echo "connecting to:" ${machine}
oarsh ${machine} 'tar -zcvf data_${machine}.tar.gz /tmp/data'
done
问题是所有数据都会保存到data_.tar.gz
存档,并多次覆盖。
如何让shell将变量 machine 替换为传递给oarsh的命令?
答案 0 :(得分:1)
正如评论中所看到的,由于单引号'
,它是关于不扩展的变量。通过更改为双引号"
,可以正确扩展变量:
oarsh ${machine} "tar -zcvf data_${machine}.tar.gz /tmp/data"
^ ^
请注意,使用单引号时,oarsh
会收到的是文字:
tar -zcvf data_${machine}.tar.gz /tmp/data
使用双引号时会替换$machine
值:
tar -zcvf data_THE_MACHINE.tar.gz /tmp/data