命令
cd /tmp; echo Hello
产生
Hello
引用,命令
"cd /tmp; echo Hello"
产生
-bash: cd /tmp; echo Hello: No such file or directory
知道为什么会这样吗?我正在尝试使用引号,因此我可以构建一个命令链并将其通过ssh传递给远程主机。谢谢。
答案 0 :(得分:1)
报价不定义字符串;它们定义单词,因此在这种情况下,您的命令只包含一个单词(除了;
之外还包含许多空格)。命令行上的第一个(非赋值)字被视为命令的名称,导致您看到错误。
ssh
的工作方式不同,因为整个字符串都会传递到远程端的 second shell,以便再次进行评估。就像您可以在本地主机上运行sh -c "cd /tmp; echo hello"
一样,以下两个命令大致相同:
ssh host "cd /tmp; echo hello"
ssh host sh -c "cd /tmp; echo hello"
答案 1 :(得分:-1)
分号符号在双引号内按字面解释。 无法在https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
找到更多解释