【发布时间】:2015-05-20 09:21:43
【问题描述】:
不管为什么,我正在尝试编写一个脚本,让我可以向不同的地址发送命令。用户有一个共享密钥,因此无需登录。但这不起作用。
因此,以下将不起作用...
#!/bin/bash
ip=$1
shift
args="'$@'"
cmd="ssh user@$ip -C $args"
output=$($cmd)
如果我使用以下命令执行它:
./myscript.sh 10.0.1.2 /bin/ls -l /var
我收到“ls -l /var: No such file or directory”的错误
如果我运行该命令(ssh user@10.0.1.2 -C '/bin/ls -l /var'),它工作正常。
我做错了什么?这些是相同的 RHEL6 安装。
【问题讨论】:
-
这是BashFAQ 50。您不能将带引号的命令放入字符串中。这是行不通的。更重要的是,您不需要这样做。如果您希望将参数作为单个单词直接使用
"$@",或者使用"$*"将参数作为单个“单词”获取。 -
谢谢。它更多的是作为一个测试用例,因为我正在回显 $args 变量。但是感谢您的提醒。
标签: linux bash session ssh remote-execution