shell script
介紹bash http://linux.vbird.org/linux_basic/0320bash.php
介紹shell script http://linux.vbird.org/linux_basic/0340bashshell-scripts.php
參考連結: https://blog.twtnn.com/2013/12/shell-script.html https://blog.csdn.net/u012373815/article/details/62076793
排程範例
讀取yaml
https://gist.github.com/pkuczynski/8665367
http://landcareweb.com/questions/2181/ru-he-cong-linux-shelljiao-ben-jie-xi-yamlwen-jian
import function
開頭/bin/sh或/bin/bash有差
bash https://ithelp.ithome.com.tw/articles/10138849
sh https://stackoverflow.com/questions/13702425/source-command-not-found-in-sh-shell
#!/bin/bash vs #!/bin/sh
定義此腳本選擇哪種shell來執行
#!/bin/sh是#!/bin/bash的缩减版。
https://blog.csdn.net/u010486679/article/details/78534841
exit 狀態碼
https://blog.csdn.net/hongkangwl/article/details/16184883
取得 Script 所在目錄位置
可以確保位置鎖定在sh檔案所在的目錄,而非執行sh的當下路徑
$0 變數代表指令的第一個參數, 即 Shell Script 本身
可藉由cd $BASEDIR至該script的位置
若要取得目錄: https://www.opencli.com/linux/shell-script-get-script-location https://blog.csdn.net/LGD_2008/article/details/45913957
特殊變數
變數 | 意義 |
$$ | shell本身的pid |
$! | shellshell後端pid |
$? | 命令執行結束的編碼(有返回值) |
$- | 使用set命令設定的flag |
$* | 列出所有傳遞給sh的參數 |
$@ | 列出所有傳遞給sh的參數 |
$# | 傳遞給sh的參數個數 |
$0 | sh檔案名稱 |
$1~$n | 傳遞給sh的參數,$1代表第一個,$2代表第二個 |
測試範本,執行時輸入test.sh aa
https://blog.csdn.net/slovyz/article/details/47400107
上一個指令最後可加上&,可用$!獲得pid
$* vs $@
http://c.biancheng.net/cpp/view/2739.html
特殊符號
&:在指令後面加上 & 符別, 即表示指令在背景執行, 例如 my-script.sh &
&&:第一道指令執行成功後, 才會執行第二道指令, 例如 make && make install
| :將第一道指令的輸出, 作為第二道指令的輸入, 例如 ls | grep filename
|| :第一道指令執行失敗後, 才會執行第二道指令, 例如 cat filename || echo “fail”
https://www.opencli.com/linux/linux-and-andand
數值比較大小
-eq:意指兩個數值是否相等。
-ne:意指兩個數值是否不相等。
-gt:意指數值1是否大於數值2。
-lt:意指數值1是否小於數值2。
-ge:意指數值1是否大於等於數值2。
-le:意指數值1是否小於等於數值2。
https://blog.csdn.net/huangjin0507/article/details/45045537
https://dreamtails.pixnet.net/blog/post/27881990
echo
# 加上 -n 可以不斷行繼續在同一行顯示
http://boson4.phys.tku.edu.tw/UNIX/Unix%20Command/unix_shell.htm
wait
等待全部或指定的處理程序執行結束
wait 指令可使 shell 暫停執行,直到指定識別碼為 n 的處理程序執行完畢或是所有的幕後處理程序執行完畢後才繼續 shell 的處理工作。shell 會去執行 wait 指令而不會產生另一個新的處理程序。
http://boson4.phys.tku.edu.tw/UNIX/Unix%20Command/unix_shell.htm
單引號、雙引號、無引號
單引號:
可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就會輸出什麼。
雙引號:
把雙引號內的內容輸出出來;如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來。
不加引號:
不會將含有空格的字串視為一個整體輸出, 如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來,如果字串中帶有空格等特殊字元,則不能完整的輸出,需要改加雙引號,一般連續的字串,數字,路徑等可以用。
Last updated