我想在一行中合併多個linux命令來執行部署操作。 例如執行在一條線中結合多個linux命令
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
我想在一行中合併多個linux命令來執行部署操作。 例如執行在一條線中結合多個linux命令
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
如果要執行僅在上一個成功的每條命令,然後使用&&
運營商將它們結合起來:
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
如果其中一個命令失敗,那麼其他所有的命令下面也不會執行。
如果你想執行的所有命令不管以前的失敗還是不行,請用分號分隔:
cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install
在你的情況,我想你想第一種情況下一個命令的執行取決於前一個的成功。
你也可以把一個腳本的所有命令和執行,而不是:
#! /bin/sh
cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install
(反斜線在該行的末尾有沒有防止shell認爲下一行是一個新的命令;如果省略反斜槓,你需要在一行寫全命令)
保存,爲一個文件,例如myscript
,並使其可執行:
chmod +x myscript
。
您現在可以像機器上的其他程序一樣執行該腳本。但是,如果你不把它放在你的PATH
環境變量(例如/usr/local/bin
,或在某些Linux發行版~/bin
)中列出的目錄中,那麼你需要指定該腳本的路徑。如果是在當前目錄下,你執行它:
./myscript
腳本的命令的工作方式與在第一個例子中的命令一樣;下一個命令僅在前一個成功時才執行。對於所有的命令無條件執行,只是在自己的行列出每個命令:
#! /bin/sh
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
它與OP腳本不一樣,請解釋:如果aa命令失敗,腳本將中止 –
另外,您可以使用'cmd1 || cmd2'分隔符,如果你只有在'cmd1'返回非零狀態到shell時需要'cmd2'才能執行,你可以使用'cmd1';如果你想運行這兩個命令而不考慮它們的返回狀態。 –
@sputnick它應該是,我只是粘貼它並連接命令與&& –
您可以用分號分隔的命令:
cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install
是什麼意思?
如果要執行所有的命令,前一個是否執行或沒有,你可以用分號(;)分隔命令。
cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install
如果你要執行的下一個命令只有在以前的命令成功,那麼你可以使用& &分離的命令。
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
在你的情況下,連續命令的執行似乎取決於前面的命令,所以使用第二個例子i。即使用& &來加入這些命令。
我發現使用;分離命令只能在前臺運行。例如:
cmd1; cmd2; cmd3 &
- 只在後臺執行cmd3
,而 cmd1 && cmd2 && cmd3 &
- 將在後臺,如果沒有錯誤,執行的整個鏈條。
爲照顧無條件執行,使用括號來解決這個:
(cmd1; cmd2; cmd3) &
- 將執行的命令的鏈的背景下,即使任何步驟失敗。
您示例中的尾隨&符號(&)是故意的嗎?如果是這樣,它是爲了什麼? – Technophile
@Technophile這是運行[背景命令](http://unix.stackexchange.com/questions/103731/run-a-command-without-making-me-wait) –
一個簡單,簡短和直接的答案,你應該更經常地使用StackExchange網站Dean。感謝您的輸入。 – CPHPython
只有一個&符的效用是什麼? 今天上午,我做的XFCE面板啓動器(在Manjaro + XFCE)推出同時2個密碼管理器:
sh -c "keepassx && password-gorilla"
or
sh -c "keepassx; password-gorilla"
但我想這是行不通的。 IE瀏覽器,第一個應用程序啓動,但第二個開始,只有當先前關閉: -/
然而,我發現(只有一個符號):
sh -c "keepassx & password-gorilla"
和它的作品,因爲我現在想要的。 ..
+1爲好的答案。 –
+1。這正是我正在尋找的! –
對於將來的讀者:如果只希望在最後一個命令失敗的情況下執行下一個命令,那麼也可以使用'||'代替分號或'&&'。正如在嘗試這個,如果失敗了,嘗試一下。 – DeVadder