我有一个关于在Bash脚本中使用变量作为命令输入的简单问题。我想编写一个脚本,它自动将目录foo
的某些内容复制到通过ssh
连接到另一个目录bar
的嵌入式计算机。在变量中使用变量作为函数参数
换句话说,我希望把下面的命令到一个更容易维护脚本:
ssh -r /foo/{file1,file2,dir1,*.h,*.hpp,*.c,*.cpp} [email protected]:~/bar
到目前为止,我有以下几点:
#!/bin/bash
SOURCE='/foo';
FILES='{file1,file2,dir1,*.h,*.hpp,*.c,*.cpp}';
DESTINATION='[email protected]:~/bar';
set -x
scp -r $SOURCE/$FILES $DESTINATION
set +x
然而,这被作为执行:
ssh -r '/foo/{file1,file2,dir1,*.h,*.hpp,*.c,*.cpp}' '[email protected]:~/bar'
我确定我在某处使用了错误的引号或括号,但我收费我喜欢我尝试过的一切。感谢任何能够帮助新手的人。 :)
那么你肯定让我更接近解决方案。在你的方法中,FILELIST得到了扩展,但scp的参数仍然出现在单引号内,所以在我的情况下(其中'/ foo'是当前目录'.','DESTINATION'是引用主目录''' ,那些符号没有得到解析,我不得不修改你的解决方案来阅读'scp -r $(eval echo“$ FILELIST”)$(eval echo $ DESTINATION)''来工作,谢谢你的帮助! –