2017-11-11 134 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"