菜鳥學Linux 第016篇筆記 bash腳本之檔案測試,變量類型
測試方法
[ EXPression ] 指令測試法
` EXEpression ` 關鍵字測試
test EXEression
bash中常用的條件測試三種:
整數測試:(雙目測試)
-gt 大于
-le 小于等于
-ne 不等于
-eq 等于
-ge 大于等于
-lt 小于
e.g.
INT1=63
INT2=77
[ $INT1 -eq $INT2 ]
[[ $INT -eq $INT2 ]]
test $INT1 -eq $INT2
檔案測試:(單目測試)
-e FILE; 測試檔案是否存在(existed)
-f file; 測試檔案是否為普通檔案;
-d FILE; 測試指定路徑是否為目錄(directory);
-r FILE; 測試目前使用者對指定檔案是否有讀取權限;
-w FILE; 測試目前使用者對指定檔案是否有可寫權限;
-x FILE; 測試目前使用者對指定檔案是否有可執行權限;
[ -e /etc/inittab ]
[ -x /etc/rc.d/rc.sysinit ]
多分支的if語句:
if 判斷條件1;then
statement1
...
elif 判斷條件1;then
statement2
elif 判斷條件n;then
statementn
else
statement
fi
測試腳本是否有文法錯誤:
bash -n 腳本 含義:查腳本有無文法錯誤
bash -x 腳本 含義:逐漸執行
定義腳本退出狀态碼
exit: 退出腳本
exit #
如果腳本沒有明确定義退出狀态碼,那麼,最後執行的一條指令的退出狀态碼
即為腳本退出狀态碼。
bash變量的類型:
本地變量(局部變量) 作用域:目前shell程序
環境變量 作用域:目前shell程序,即其子shell
位置變量 $1 $2 $3 ...
shift n 移位到第n+1個參數;
./script /etc/fstab /etc/inittab
$1 /etc/fstab 表示腳本第一個參數
$2 /etc/inittab 表示腳本第二個參數
特殊變量
$? 上一條指令的退出狀态碼
$# 參數的個數
$* 參數清單
$@ 參數清單
小練習:寫腳本
script1
1、給定一個檔案:
如果是一個普通檔案,則顯示之;
如果是一個目錄,亦顯示之;
否則,此為無法識别的檔案。
script2
能接受一個參數(檔案路徑)
判定:此參數如果是一個存在的檔案,就顯示OK;
否則就顯示“No such file."
script3
1、給腳本傳遞兩個參數(整數);
2、顯示此兩者之和,之積;
key:
script1
#!/bin/bash
#
FILE=/etc/rc.xxx
if [ ! -e $FILE ]; then
echo "No such file."
exit 6
if [ -f $FILE ]; then
echo "Common file."
elif [ -d $FILE ]; then
echo "Directory."
echo "Unrecognize file."
script2
FILE=$1
if [ $# -eq 0 ]; then
echo "You need to input a parameter."
exit 2
if [ -e $FILE ]; then
echo "OK"
else
if [ $# -ne 2 ]; then
echo "Usage: command ARG1 ARG2."
exit 1
echo "The sum is $[$1+$2]."
echo "The xj is $[$1*$2]."
本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1862941如需轉載請自行聯系原作者
Winthcloud