【发布时间】:2017-01-18 00:52:08
【问题描述】:
我有一个命令,我试图通过 SSH 运行,但我不知道如何正确地将它用引号括起来。以下是 2 次尝试,但都没有做我想做的事。
A) 命令用双引号括起来
version=1.1
ssh nrichard@myserver.com "
cd /home/nrichard/${version}
ls | while read filename ; do
echo $filename
hive -f $filename &
done"
这样就可以进入正确的目录/home/nrichard/1.1 但是 while 循环不起作用,因为在通过 ssh 发送命令之前,$filename 被一个空字符串替换。 另一方面...
B) 命令用单引号括起来
version=1.1
ssh nrichard@myserver.com '
cd /home/nrichard/${version}
ls | while read filename ; do
echo $filename
hive -f $filename &
done'
这将无法转到正确的目录 /home/nrichard/1.1。它将尝试转到“/home/nrichard/${version}”,这不是一个存在的目录,也不是我想去的目录。 但是 while 循环可以正常工作。
关于如何完成这项工作的任何想法?
【问题讨论】: