0

我制作了一个 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"
4

1 回答 1

0

这很可能是由于引用过强引起的。这个错误行

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

表明 bash 不会尝试使用命令后跟/bin/echo参数的命令来执行命令。相反 bash 正在尝试执行命令。'hello'bash -l/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,但除非我看到您提供的更多代码,否则我无法确定。

于 2013-09-01T13:45:49.507 回答