Linux Shell 程式設計學習筆記

Blue Sky ......發表於2013-09-22

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

例項: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

相關文章