2014-02-21 76 views
0

有幾種方法可以一次運行多個命令。一種方法是用分號分隔每個命令:將多個命令括在Unix Shell腳本中的用法

ls;who;banner Hi 

另一種方法是將多個命令括在括號中。

(cd mydir;pwd) 

將括號括起來會發生什麼?

+1

請注意'$(cd mydir; pwd)'和'(cd mydir; pwd)'的含義不同。我已經更新了這個問題,以反映我想要表達/寫出的內容(但如果我錯了,可以更改它)。另外,作爲一個瑣事,ls; who;橫幅Hi'按順序運行三個命令,就像你先輸入'ls'然後'who'然後'輸入'Hi'一樣。要一次運行它們,您需要'ls&who&banner Hi'(最好在&符號周圍留空格)。你也可以寫'{ls;誰;橫幅您好; }> somefile'一次對所有命令執行I/O重定向。第三個分號是必需的。 –

回答

2

圓括號創建一個子shell。子shell是它們當前shell的副本,這意味着狀態更改(如使用cd更改工作目錄或設置shell變量或導出環境變量不會影響原始shell。

在這裏的情況下,cd命令更改工作目錄,並且pwd顯示此。當提示符返回時,您仍將位於之前的同一目錄中,因爲cd僅在子shell中更改了目錄。

+0

當我們必須將多個命令放在pamentalhesis中以及何時使用分號分隔多個命令時,能否請你告訴我? @Joni – bvb

+0

當你想要一個子shell時使用括號。 – Joni

+0

嗯..,但請讓我知道有什麼用的subshel​​l? @Joni – bvb