好久不用shell了,今天碰到一個坑,發現exit后,shell腳本還會運行。 exit 如果用在管道中的話,他會退出當前管道,但當前腳本還會運行。因為他只是結束管道這個子進程。 所以我們還需要在加一句 [ $? -eq 99 ] || exit ...
常規做法 可以看到直接使用exit可以退出腳本,並且可以將錯誤碼作為參數傳遞。下面我們將腳本做一點點改動。 存在的問題 在管道 中執行exit script函數,不會退出整個腳本 原因在於,exit只能退出它所在的Shell,而放在管道中執行的命令 函數都是在獨立的Shell Sub Shell 中執行的,所以上面腳本的進程樹是這個樣子的: 自上往下,各個PID的含義如下表: PID 說明 . t ...
2017-03-17 15:27 0 34150 推薦指數:
好久不用shell了,今天碰到一個坑,發現exit后,shell腳本還會運行。 exit 如果用在管道中的話,他會退出當前管道,但當前腳本還會運行。因為他只是結束管道這個子進程。 所以我們還需要在加一句 [ $? -eq 99 ] || exit ...
shell中運行的每個命令都使用退出狀態碼(exit status)來告訴shell它完成了處理。 退出狀態碼是一個0-255之間的整數值,在命令運行結束后由命令傳遞給shell,你可以捕獲這個值並在腳本中使用。 查看退出狀態碼 $?,保存上個命令的退出狀態碼 ...
Shell也使用 break 和 continue 來跳出循環。 break命令 下面的例子中,腳本進入死循環直至用戶輸入數字大於5,使用break跳出這個循環。 在嵌套循環中,break 命令后面還可以跟一個整數,表示跳出第幾層循環。 下面是一個嵌套循環 ...
一,退出狀態碼 1,范圍:0~255 2,查看退出狀態碼:必須在命令執行之后立即執行 ,顯示的是腳本最后一條命令的退出狀態碼 若f返回值為0,則表示正常 有異常為正值 二,exit 腳本會以最后一個命令的退出狀態碼退出 ...
一、for循環 語法:for 變量名 in 條件; do …; done 案例1 #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[ ...
一個新的需求,需要在shell腳本中退出當前登錄用戶 方式一 方式二 ...
部署sersync時,執行腳本無法退出 原因: sersync為后台任務,導致出現卡住情況; 解決辦法: 重定向輸出到/dev/null文件或者自定義的文件中 ...
在shell腳本中,比如有以下的代碼: cd /root/test88 rm -rf backup 如果目錄/root/test88不存在,腳本不會停止,依然會執行rm -rf backup這個命令 要讓腳本停止執行: #!/bin/bash -e 或 set -e ...