shell script
Last updated
Was this helpful?
Last updated
Was this helpful?
介紹bash
介紹shell script
參考連結:
排程範例
開頭/bin/sh或/bin/bash有差
bash
sh
定義此腳本選擇哪種shell來執行
#!/bin/sh是#!/bin/bash的缩减版。
可以確保位置鎖定在sh檔案所在的目錄,而非執行sh的當下路徑
$0 變數代表指令的第一個參數, 即 Shell Script 本身
可藉由cd $BASEDIR至該script的位置
變數
意義
$$
shell本身的pid
$!
shellshell後端pid
$?
命令執行結束的編碼(有返回值)
$-
使用set命令設定的flag
$*
列出所有傳遞給sh的參數
$@
列出所有傳遞給sh的參數
$#
傳遞給sh的參數個數
$0
sh檔案名稱
$1~$n
傳遞給sh的參數,$1代表第一個,$2代表第二個
測試範本,執行時輸入test.sh aa
上一個指令最後可加上&,可用$!獲得pid
&:在指令後面加上 & 符別, 即表示指令在背景執行, 例如 my-script.sh &
&&:第一道指令執行成功後, 才會執行第二道指令, 例如 make && make install
| :將第一道指令的輸出, 作為第二道指令的輸入, 例如 ls | grep filename
|| :第一道指令執行失敗後, 才會執行第二道指令, 例如 cat filename || echo “fail”
-eq:意指兩個數值是否相等。
-ne:意指兩個數值是否不相等。
-gt:意指數值1是否大於數值2。
-lt:意指數值1是否小於數值2。
-ge:意指數值1是否大於等於數值2。
-le:意指數值1是否小於等於數值2。
# 加上 -n 可以不斷行繼續在同一行顯示
等待全部或指定的處理程序執行結束
wait 指令可使 shell 暫停執行,直到指定識別碼為 n 的處理程序執行完畢或是所有的幕後處理程序執行完畢後才繼續 shell 的處理工作。shell 會去執行 wait 指令而不會產生另一個新的處理程序。
單引號:
可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就會輸出什麼。
雙引號:
把雙引號內的內容輸出出來;如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來。
不加引號:
不會將含有空格的字串視為一個整體輸出, 如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來,如果字串中帶有空格等特殊字元,則不能完整的輸出,需要改加雙引號,一般連續的字串,數字,路徑等可以用。
若要取得目錄: