我创建了一个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"
答案 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
,但除非我看到更多代码,否则我无法确定。