我在脚本中有以下内容
for server in ${servers[@]}; do
echo ${server}
ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done"
done
Run Code Online (Sandbox Code Playgroud)
但它不起作用。奇怪的是,我看到 $I 数量的返回行。所以如果我有十个文件,我会看到十个空行。
小智 20
您的本地 shell 会解释${i}双引号 ( ") 内的内容,因此该命令的结果是
ssh user@some.serv.er "for i in /tmp/foo* ; do echo; done"
Run Code Online (Sandbox Code Playgroud)
只需使用单引号 ( ') 代替,您的问题就会消失:
ssh user@${server} 'for i in /tmp/foo* ; do echo $i; done'
Run Code Online (Sandbox Code Playgroud)
小智 5
刚刚遇到这个问题,并且给出的解决方案虽然确实有效,但如果您还从本地 shell 中提取变量,那么在 ssh 之前您创建一个数组进行迭代,但它并不太有效。有点混乱的是最初只是转义 $ 所以它是
"for i in /tmp/foo* ; do echo \${i}; done"
这将在本地构造中转义它,而不是调用的 ssh shell。
| 归档时间: |
|
| 查看次数: |
46199 次 |
| 最近记录: |