我试图编写一个脚本,将多个文件(在多个目录中)从远程主机复制到本地计算机。
我的剧本(或多或少)如下:
path1="/home/db/primary/*.xml"
path2="/tmp/log_*"
copyto="/home/pathtodesktop/Desktop/temp"
mkdir $copyto
scpcommand="scp -o StrictHostKeyChecking=no root@$address:\"$path1 $path2\" $copyto"
echo $scpcommand
$scpcommand
当我运行脚本时,我得到以下输出:
scp -o StrictHostKeyChecking=no root@SERVER:"/home/db/primary/*.xml /tmp/log_*" /home/pathtodesktop/Desktop/temp
sh: syntax error: unterminated quoted string
cp: cannot stat '/tmp/log_*"': No such file or directory
回声的输出符合预期。但是当我复制上面的输出并在终端中手动运行命令时,它按预期工作,没有错误。
所以最终的问题是,我做错了什么?在终端中手动运行时,该命令似乎工作正常。我的语法错误在哪里?
感谢您的帮助!
答案 0 :(得分:1)
添加set -f
会阻止路径中的通配符在本地扩展(尽管您可能会遇到其他有空格/特殊字符的问题)。
(您可以使用set +f
)