分号是否用双引号字符串拆分多个命令?

时间:2017-11-11 18:20:18

标签: bash

命令

cd /tmp; echo Hello

产生

Hello

引用,命令

"cd /tmp; echo Hello"

产生

-bash: cd /tmp; echo Hello: No such file or directory

知道为什么会这样吗?我正在尝试使用引号,因此我可以构建一个命令链并将其通过ssh传递给远程主机。谢谢。

2 个答案:

答案 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

找到更多解释