// 其餘雜項知識點 對於普通用戶,Base shell 默認的提示符是美圓符號$;對於超級用戶(root 用戶),Bash Shell 默認的提示符是井號# ------- \#!是一個約定的標記,它告訴系統這個腳本須要什麼解釋器來執行,即便用哪種Shell;後面的/bin/bash就是指明瞭解釋器的具體位置 ------- read 命令用來從標準輸入讀取用戶輸入的數據 ------- 點號用於執行某個腳本,甚至腳本沒有可執行權限也能夠運行。有時候在測試運行某個腳本時可能並不想爲此修改腳本權限,這時候就能夠使用.來運行腳本,很是方便。 ------- sh-3.2# echo $SHELL // 查看系統使用的shell爲bash /bin/sh sh-3.2# bash --version // 查看bash版本 等同 echo $BASH_VERSION GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17) Copyright (C) 2007 Free Software Foundation, Inc. -------- 字符串截取操做 ${string: start :length} // 從0開始 截取的長度(能夠省略,省略長度表明截取到末尾) hello='Hello World!' echo ${hello:6:5} // 從6開始截取5個字符 echo ${hello:6} // 截取到末尾 hello='Hello World!' // 從指定字符開始截取到末尾 echo ${hello#*o} // \#表明指定截取 \*通配左邊全部字符 sh-3.2# echo ${hello#r} Hello World! sh-3.2# echo ${hello#Hello Wor} // 不使用通配符也行 # 截取右邊字符,忽略左邊 sh-3.2# echo ${hello#*o} // 默認從第一個指定字符開始 World! sh-3.2# echo ${hello##*o} // 從最後一個指定字符開始匹配 rld! % 截取左邊,忽略右邊 (跟#相反) sh-3.2# echo ${hello%o*} Hello W sh-3.2# echo ${hello%%o*} Hell -------- 數組合並 sh-3.2# arr1=(1 2 3) sh-3.2# arr2=(4 5 6) sh-3.2# arr3=(${arr1[@]} ${arr2[@]}) sh-3.2# echo ${arr3[@]} 1 2 3 4 5 6 -------- /etc/bashrc 文件 alias hello='ls -l' // 添加alias別名 source 執行一下 -------- `` 反引號和 $() 差很少,字符串將解釋成shell命令來執行 z:~ k$ for i in `ls`; do > echo $i > done Applications Applications (Parallels) Desktop z:~ k$ -------- ((表達式)) 多個表達式之間以逗號,分隔, sh-3.2# echo $((a=2,b=3)) // $獲取 (( )) 命令的結果 3 // 以最後一個表達式的值做爲整個 (( )) 命令的執行結果 // 使用變量時不用加$前綴,(( )) 會自動解析變量名 sh-3.2# a=2 sh-3.2# b=3 sh-3.2# echo $((a)) 2 let 也是表達式求值 和(())同樣,只是當是多個表達式時,是以空格爲分割 sh-3.2# let a=1 b=2 sh-3.2# echo $a $b 1 2 $[] 跟let (()) 也差很少 sh-3.2# echo $[1+2] 3 -------- expr 整數計算 sh-3.2# expr 1 + 2 3 sh-3.2# expr 1 \* 3 3 sh-3.2# a=1 sh-3.2# expr $a 1 sh-3.2# expr \( 1 \* 3 \) + 2 // 括號也要轉義 5 -------- for 循環 for((exp1; exp2; exp3)) do xxx done -------- 退出狀態 每一條 Shell 命令,當它退出(運行結束)時,都會返回一個整數值給調用(使用)它的程序,即命令的退出狀態 if 語句的判斷條件,從本質上講,判斷的就是命令的退出狀態 按照慣例來講,退出狀態爲 0 表示「成功」;也就是說,程序執行完成而且沒有遇到任何問題。除 0 之外的其它任何退出狀態都爲「失敗」 sh-3.2# echo $(( 1 * 2 )) 2 sh-3.2# echo $? 0 // 0成功 sh-3.2# abcdefg sh: abcdefg: command not found sh-3.2# echo $? 127 // 失敗 -------- select in 循環,它能夠顯示出帶編號的菜單,用戶輸入不一樣的編號就能夠選擇不一樣的菜單,並執行不一樣的功能 sh-3.2# select name in "aa" "bb" "cc" "dd" \> do \> echo $name \> done 1) aa 2) bb 3) cc 4) dd \#? 1 aa \#? 2 bb \#? 3 cc \#? 4