分号用双引号字符串分割多个命令吗?
问题描述:
cd /tmp; echo Hello
产生
Hello
引用,命令
"cd /tmp; echo Hello"
产生
-bash: cd /tmp; echo Hello: No such file or directory
任何想法,为什么会是这样?我试图使用引号,以便我可以建立一个命令链并通过ssh传递给远程主机。谢谢。
答
行情没有定义字符串;他们定义了单词,因此在这种情况下,您的命令只包含一个单词(除了;
之外,还包含大量空白)。命令行中的第一个(非赋值)单词被视为命令的名称,导致出现错误。
ssh
以不同的方式工作,因为整个字符串被传递给远程端上的第二个 shell以再次进行评估。就像您可以在本地主机上运行sh -c "cd /tmp; echo hello"
一样,以下两个命令大致相同:
ssh host "cd /tmp; echo hello"
ssh host sh -c "cd /tmp; echo hello"