cd /tmp; echo Hello
產生
Hello
引用,命令
"cd /tmp; echo Hello"
產生
-bash: cd /tmp; echo Hello: No such file or directory
任何想法,爲什麼會是這樣?我試圖使用引號,以便我可以建立一個命令鏈並通過ssh傳遞給遠程主機。謝謝。
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"
分號在雙引號內解釋。 更多解釋不能在這裏找到https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html