exit:退出腳本
exit:# #為退出碼,取值範圍:0-255 一般0為正常退出,1,127預留給系統,剩下的自定義
bash中常用的條件測試有三種:
整數測試:
-gt
-le
-ne
-eq
-ge
-lt
格式:
A=1
B=2
[ $A -eq $B ]
[[ $A -eq $B ]
test $A -eq $B
檔案測試:
-e FILE:測試檔案是否存在 exists
-f FILE:測試檔案是否為普通檔案
-d FILE:測試指定檔案是否為目錄
-r FILE:測試目前使用者是否對檔案具有讀權限
-w FILE:測試目前使用者是否對檔案具有寫權限
-x FILE:測試目前使用者是否對檔案具有執行權限
字元測試:
==:測試兩個字元串是否相等
!=:測試兩個字元串是否不等
>或<:對比兩個字元串的大小(先轉換為ASCII的值,然後對比)
-n:測試字元串是否為空,空為真,不空為假
-z:測試字元串是否為不空,不空為真,空則為假
測試腳本是否文法錯誤:
bash -n 腳本
bash -x 腳本:單步執行腳本(可以看到腳本的執行過程)
練習:寫一個腳本
給定一個檔案:
如果是一個普通檔案,就顯示之
如果是一個目錄,亦顯示之
否則,顯示無法識别
#!/bin/bash
if [ $# -lt 1 ];then
echo "Usage: ./checkfile.sh ARG .."
exit 2
fi
if [ ! -e $1 ];then
echo $1 not exists!
exit 7
elif [ -f $1 ];then
echo "comman files!"
elif [ -d $1 ];then
echo "directory files!"
else
echo "unknow files!"
定義腳本退出狀态碼:
exit:退出腳本
exit #:設定腳本退出碼為#(0-255,0、1、127一般留作系統備用),如果腳本沒有明确定義退出狀态碼,那麼,最後一條執行的指令的退出碼即為腳本的退出碼。
bash的變量的類型:
本地變量:作用域為目前shell程序
環境變量:作用域為目前shell及其子shell程序
位置變量:
$1、$2、...
shift:把位置變量進行傳遞
特殊變量:
$#:參數的個數
$*:參數清單
$@:參數清單
$?:指令的執行狀态結果
shift示例:
[root@logstach ~]# cat 1.sh
echo "before shift : \$1: $1 \$2: $2 \$3: $3 \$4: $4 \$5: $5"
shift 1
echo "now shift 1 : \$1: $1 \$2: $2 \$3: $3 \$4: $4 \$5: $5"
shift 2
echo "now shift 2 : \$1: $1 \$2: $2 \$3: $3 \$4: $4 \$5: $5"
[root@logstach ~]# ./1.sh 1 2 3 4 5 6 7 8 9 10
before shift : $1: 1 $2: 2 $3: 3 $4: 4 $5: 5
now shift 1 : $1: 2 $2: 3 $3: 4 $4: 5 $5: 6
now shift 2 : $1: 4 $2: 5 $3: 6 $4: 7 $5: 8
本文轉自biao007h51CTO部落格,原文連結: http://blog.51cto.com/linzb/1732868,如需轉載請自行聯系原作者