1:Shell Script中if語句的條件部分要以分號來分隔
2:要注意條件測試部分中的空格。在方括號的兩側都有空格
3:echo "Hi, ${a}s" 單引號中的變數不會進行變數替換操作。
4:[ -f "$file" ] 判斷$file是否是一個檔案
5:[ $a -lt 3 ] 判斷$a的值是否小於3,同樣-gt和-le分別表示大於或小於等於
6:[ -x "$file" ] 判斷$file是否存在且有可執行許可權,同樣-r測試檔案可讀性
7:[ -n "$a" ] 判斷變數$a是否有值,測試空串用-z
8:[ "$a" = "$b" ] 判斷$a和$b的取值是否相等
9:[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立
說明:$#表示包括$0在內的命令列引數的個數。在Shell中,指令碼名稱本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整個引數列表,不包括$0,也就是說不包括檔名的引數列表。
注意:一定要切記filelist=後邊的那個引號不是單引號,而是tab鍵上邊的那個鍵,或者說是1左邊的那個鍵
filelist=`ls /home/work`
for file in $filelist
do
echo $file
done
例項:shell遍歷目錄下所有檔案 displayfile.sh
#!/bin/sh
cd $1
echo "The Catelog:$1"
files=`ls -a`
m=0
n=0
for f in $files
do
if [ -d "$f" ]; then
m=`expr $m + 1`
else
n=`expr $n + 1`
echo "$f"
fi
done
echo -e "The Catelog Number is $m"
echo -e "The File Number is $n"
執行:./displayfile.sh /home/work
cd $1
echo "The Catelog:$1"
files=`ls -a`
m=0
n=0
for f in $files
do
if [ -d "$f" ]; then
m=`expr $m + 1`
else
n=`expr $n + 1`
echo "$f"
fi
done
echo -e "The Catelog Number is $m"
echo -e "The File Number is $n"
執行:./displayfile.sh /home/work
例項:Linux shell指令碼判斷當前是否為root使用者
whoami(顯示當前使用者的使用者名稱)if [ `whoami` = "root" ];then
echo "root使用者!"
else
echo "非root使用者!"
fi
id -u (顯示當前使用者的uid)
if [ `id -u` -eq 0 ];then
echo "root使用者!"
else
echo "非root使用者!"
fi