標籤:bash linux centos shell
1、shell指令碼一般以#!開頭。
2、printf: printf “%-5s %-10s %-4s\n” No Name Mark。%-5s指明一個格式為靠左對齊且寬度為5的字串替代(-表示靠左對齊),如果不用-指定對齊,字串則採用靠右對齊。寬度指定了保留給某個變數的字元數。對Name而言,保留寬度是10。
3、獲得字串的長度:var=1213434545345 length=$(#var) 可以獲得字串長度,存放在length中。 獲得使用哪種shell:echo $SHELL 或者 echo $0。 echo $UID 為0則為超級使用者。
4、shell中數學運算:可以利用let、(())和[ ] 執行基本算數操作,進階操作使用 expr和bc。 n1=10 n2=12 自加:let n1++ result=$[ n1+n2 ] retult = `expr 3+4` result=$(expr $n1 +3)
5、文本描述符。 0 —— stdin (標準輸入)
1 —— stdout (標準輸出)
2 —— stderr (標準錯誤)
使用 echo $? 可以列印退出狀態。
錯誤重新導向: ls + 2> out.txt 將錯誤資訊輸出到out.txt中。
6、數組定義: array_var=(1 2 3 4 5 ) 或者 array_var[0] = "test1"。 echo ${array_var[*]} 輸出所有的值,echo ${array_var[2]} 輸出第二個 值。
7、擷取終端資訊。 擷取終端的行數和列數: tput cols
tput lines
游標移動懂啊方位(100,100)處: tput cup 100 100
獲得時間:date,日期格式如下:
$ date "+%d %B %Y"
09 February 2015
8、指令碼調試。
使用選項-x,啟動跟蹤調試shell指令碼:
$ bash -x script.sh
-x標誌能列印出所有執行的每一行命令及目前狀態。輸出到stdout。
可以在指令碼中啟用或禁止調試列印。
set -x :在執行時顯示參數和命令
set +x:禁止調試
set -v:當前命令進行讀取時顯示輸入
set +v:禁止列印輸入。
9、函數和參數。
定義函數:
function fname()
{
statements;
}
或者
fname()
{
statements;
}
只要使用函數名就可以調用某個函數:
$ fname ;
fname arg1 arg2 ;傳遞參數
fname()
{
echo $1, $2; #訪問參數1和參數2
echo “[email protected]” ; 以列表形式一次性列印所有參數 類似有“$*”
}
$1是第一個參數
$2是第二個參數
$n是第n個參數
"[email protected]" 被擴充成“$1” "$2" "$3"等。
10、利用子shell產生一個獨立的進程
子shell本身就是獨立進程。可以使用()操作符來定義一個子shell:
pwd;
(cd /bin;ls)
pwd;
子shell中執行時,不會對當前shell有任何影響,所有改變僅限於子shell內。如上例子中兩個pwd命令輸入內容一致。
11、read 讀取鍵盤命令。
讀取n個字元並存入變數var: read -n 2 var
不回顯的方式讀取密碼: read -s var
顯示提示資訊: read -p “Enter input:” var
兩秒內鍵入的字串讀入var:read -t 2 var
12、-gt :大於; -lt :小於; -ge:大於或等於; -le :小於或等於; -a:邏輯與 ; -o : 邏輯或。 -ne 不等於, -eq 等於。
[ $var1 -ne 0 -a $var2 -gt 2 ] var1不等於0,並且var2大於2。
系統檔案相關測試:
[ -f $file_var ] ;如果給定的變數包含正常檔案路徑或檔案名稱,返回真
[ -x $var ] :如果變數包含的檔案可執行,為真
[ -d $var ]: 包含目錄為真。
[ -e $var ]:包含的檔案存在,為真
[ -c $var ]:包含字元裝置,為真
[ -b $var ]:塊裝置,為真
[ -w $var ]:可寫,為真 ; -r可讀為真; -L 符號串連,為真。
字串比較:
[[ $str1 = $str2 ]] :相等返回真。 != 不等返回真。 > 大於返回真 , < 小於返回真。
[[ -z $str1 ]] :Null 字元串返回真 , -n 非空返回真。
shell指令碼知識(一) 基本知識預備