2017-11-11 135 views
-2

命令分号用双引号字符串分割多个命令吗?

cd /tmp; echo Hello 

产生

Hello 

引用,命令

"cd /tmp; echo Hello" 

产生

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

任何想法,为什么会是这样?我试图使用引号,以便我可以建立一个命令链并通过ssh传递给远程主机。谢谢。

回答

1

行情没有定义字符串;他们定义了单词,因此在这种情况下,您的命令只包含一个单词(除了;之外,还包含大量空白)。命令行中的第一个(非赋值)单词被视为命令的名称,导致出现错误。

ssh以不同的方式工作,因为整个字符串被传递给远程端上的第二个 shell以再次进行评估。就像您可以在本地主机上运行sh -c "cd /tmp; echo hello"一样,以下两个命令大致相同:

ssh host "cd /tmp; echo hello" 
ssh host sh -c "cd /tmp; echo hello"