shell指令碼中多命令單行執行 轉

2022-06-21 06:54:09 字數 832 閱讀 6315

如果希望把幾個命令合在一起執行, shell提供了兩種方法。既可以在當前shell也可以在子shell中執行一組命令。

對{}和()而言, 括號中的重定向符只影響該條命令, 而括號外的重定向符影響到括號中的所有命令。

在子shell中執行一組命令,可以用命令分隔符(即";")隔開每乙個命令,並把所有的命令用圓括號()括起來,最後乙個命令後可以沒有分號。

它的一般形式為: 

( 命令;命令;命令… )

1 一條命令需要獨佔乙個物理行,如果需要將多條命令放在同一行,命令之間使用命令分隔符(;)分隔。執行的效果等同於多個獨立的命令單獨執行的效果。

2 () 表示在子shell中將多個命令作為乙個整體執行。需要注意的是,使用 () 括起來的命令在執行前面都不會切換當前工作目錄,也就是說命令組合都是在當前工作目錄下被執行的,儘管命令中有切換目錄的命令。

3 命令組合常和命令執行控制結合起來使用。

示例 4

malihou@ubuntu:~$ rm ~/desktop/1.txt || (cd ~/desktop/;ls -a;echo "fail")

在示例 4 中,如果目錄 ~/desktop 下不存在檔案 1.txt,則執行命令組合。

如果使用{}來代替(),那麼相應的命令將在當前shell而不是子shell中作為乙個整體被執行。

它的一般形式為: 

注意:在使用{}時,{}與命令之間必須使用乙個空格,最後乙個命令後必須有分號。

測試: 

~$ a=1;echo $a;;echo $a 

1 2 

~$ a=1;echo $a;( a=2; );echo $a 1 1

**:參考:

Python指令碼中執行shell命令

system 其中最後乙個0是這個命令的返回值,為0表示命令執行成功。使用system無法將執行的結果儲存起來。這裡寫描述popen 獲取命令執行的結果,但是沒有命令的執行狀態,這樣可以將獲取的結果儲存起來放到list中。commands 可以很方便的取得命令的輸出 包括標準和錯誤輸出 和執行狀態位...

shell指令碼 eval執行shell命令

和其他語言的eval功能差不多,都是將乙個儲存執行語句的變數作為引數,eval會讓變數所儲存的語句執行。下面是乙個執行表單提交的命令 注意,這裡只是示例,應用中不要這麼使用,很危險 bin bash index.cgi echo content type text html charset utf ...

ccl命令列執行lisp指令碼

最近在學習lisp,lisp作為傳說中最古老的語言之一,fp的經典語言之一,對我這種喜歡瞎研究的人來說,是很有吸引力滴。不過,我要說的是,lisp可不像python這麼方便快捷,不同dialect之間差別還是挺大的,就執行乙個lisp指令碼,似乎都不是那麼簡單的事情。對於被python慣壞了了的我來...