1. 程式人生 > >shell 指令碼的一些常用命令 set, export, shell陣列,esac, tee,time

shell 指令碼的一些常用命令 set, export, shell陣列,esac, tee,time

1. set

Linux set命令用來設定 shell ,設定使用shell的執行方式。
引數說明

  • -a  標示已修改的變數,以供輸出至環境變數。
  • -b  使被中止的後臺程式立刻回報執行狀態。
  • -C  轉向所產生的檔案無法覆蓋已存在的檔案。
  • -d  Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d引數可取消。
  • -e  若指令傳回值不等於0,則立即退出shell。
  • -f  取消使用萬用字元。
  • -h  自動記錄函式的所在位置。
  • -H Shell  可利用"!"加<指令編號>的方式來執行history中記錄的指令。
  • -k  指令所給的引數都會被視為此指令的環境變數。
  • -l  記錄for迴圈的變數名稱。
  • -m  使用監視模式。
  • -n  只讀取指令,而不實際執行。
  • -p  啟動優先順序模式。
  • -P  啟動-P引數後,執行指令時,會以實際的檔案或目錄來取代符號連線。
  • -t  執行完隨後的指令,即退出shell。
  • -u  當執行時使用到未定義過的變數,則顯示錯誤資訊。
  • -v  顯示shell所讀取的輸入值。
  • -x  執行指令後,會先顯示該指令及所下的引數。
  • +<引數>  取消某個set曾啟動的引數。
    set -xset +x可以配套使用,顯示一段程式碼的執行情況,在set命令之後執行的每一條命令以及載入命令列中的任何引數都會顯示出來,每一行都會加上加號(+),提示它是跟蹤輸出的標識。

2. export

Linux export命令用於設定或顯示環境變數。
語法: export [-fnp][變數名稱]=[變數設定值]
引數說明:

  • -f  代表[變數名稱]中為函式名稱。
  • -n  刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。
  • -p  列出所有的shell賦予程式的環境變數。

3.shell 陣列

  • 獲取陣列的元素
    使用@ 或 * 可以獲取陣列中的所有元素
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "陣列的元素為: ${my_array[*]}
"
echo "陣列的元素為: ${my_array[@]}"

輸出的結果為

$ chmod +x test.sh 
$ ./test.sh
陣列的元素為: A B C D
陣列的元素為: A B C D
  • 獲取陣列的長度
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "陣列元素個數為: ${#my_array[*]}"
echo "陣列元素個數為: ${#my_array[@]}"

輸出的結果為:

$ chmod +x test.sh 
$ ./test.sh
陣列元素個數為: 4
陣列元素個數為: 4

4.case … esac

與其他語言中的 switch … case 語句類似,是一種多分支選擇結構。

5.tee

Linux tee命令用於讀取標準輸入的資料,並將其內容輸出成檔案。
tee指令會從標準輸入裝置讀取資料,將其內容輸出到標準輸出裝置,同時儲存成檔案。
引數:

  • -a或–append  附加到既有檔案的後面,而非覆蓋它.
  • -i或–ignore-interrupts  忽略中斷訊號。
  • –help  線上幫助。
  • –version  顯示版本資訊。

6.time

一個程式在執行時使用的系統資源通常包括CPU、記憶體和I/O等;
CPU資源的統計包括實際使用時間(real time)、使用者態使用時間(the process spent in user mode)、核心態使用時間(the process spent in kernel mode)。
time 它可以為一段指令碼或一個程式的執行計時。