函数在CLI上运行,但不在bash脚本中运行

时间:2013-09-01 09:06:43

标签: bash unix ssh executable

我创建了一个bash脚本来生成一个ssh,我一直使用它和几个选项。最后它回显一个字符串,无论它将要执行什么,然后执行它。目前我正在尝试添加添加bash命令的功能,以便在ssh完成后运行,但是它给出了如下错误:

bash: /bin/echo 'hello'; bash -l: No such file or directory

然而,如果我复制它运行的命令,并从可执行文件外部运行它,它运行完美。我是否有任何理由从可执行文件中获取此错误,而不是从CLI?

它生成的示例命令是:

pair -c "/bin/echo 'hello'"
Running: ssh ****@#.#.#.# -p443 -t "/bin/echo 'hello'; bash -l"

1 个答案:

答案 0 :(得分:0)

这很可能是因为报价太强引起的。这个错误行

bash: /bin/echo 'hello'; bash -l: No such file or directory

表明bash不会尝试使用参数/bin/echo后跟命令'hello'执行命令bash -l。相反,bash正在尝试执行命令/bin/echo 'hello'; bash -l

比较

$ ssh localhost -t "/bin/echo 'foo'; bash -l"
foo
$ logout # this is the new shell
Connection to localhost closed.

$ ssh localhost -t '"/bin/echo 'foo'; bash -l"'
bash: /bin/echo foo; bash -l: No such file or directory
Connection to localhost closed.

此问题的解决方案通常涉及eval,但除非我看到更多代码,否则我无法确定。