文件測試用法:
-e :判斷文件是否存在,如果不存在返回的狀態爲假
-f :判斷文件是否爲普通文件
-d :判斷是否爲目錄
-x :判斷當前用戶是否可執行此文件
-w :判斷當前用戶是否可寫此文件
-r :判斷當前用戶是否可讀此文件
如 [ -e /etc/inittab ]
if多分支語句
if 條件一 ;then
執行語句
elif 條件二 ;then
執行語句
。。。
else
執行語句
fi
寫一個腳本,給定一個文件:如果是一個普通文件,就打印this is file。;如果是一個目錄就打印this is directory。否則,此爲無法識別之文件;腳本內容如下:
#!/bin/bash
FILE=$1 #$1是位置變量,表示接受腳本後面接的第一個參數,$2,$3 ...表示接第二,三...個參數
#如果後面接的不止一個參數,只取第一個參數。
# $# 是特殊變量,獲取參數的個數($* 列出所有參數),如過參數小於一個,就exit 1 退出,退出時帶上退出狀態碼1,
# 如果不加上退出狀態碼,它默認的退出狀態碼就會以上一條命令的執行狀態爲準。
NUM=$#
if [ $NUM -lt 1 ];then
echo "腳本後面需接一個參數,如:judge.sh /etc/passwd ."
exit 1
fi
if [ -f $FILE ];then
echo "this is file."
elif [ -d $FILE ];then
echo "this is directory."
else
echo "無法識別此文件."
fi
另外需要注意的是,如果參數比較少只有一兩個可以用$1,$2...,那如果有幾十上百個呢?我們不可能用一大堆$1...吧,此時我們要用到 shift語句,如shift 1 表示使用完上一個參數後,就將第一個參數丟掉,把第二個參數當作第一個參數,以此類推。如下腳本:
#!/bin/bash
echo $1
shift 1
echo $1
shift 1
echo $1
shift 1
echo $1
執行結果:
[root@localhost ~]# sh shift.sh 1 2 3 4
1
2
3
4
另外如果要調試腳本,可以使用 bash -x xxx.sh 可以打印出腳本的執行過程,方便找出錯誤。