shell编程中的控制判断语句

if

  • 单格式与嵌套
if 条件表达式;then #当条件为真时执行以下语句  
  命令列表  
else #为假时执行以下语句  
  命令列表  
fi

if 语句也可以嵌套使用  
if 条件表达式1;then  
    if 条件表达式2;then  
        命令列表  
    else  
        if 条件表达式3;then  
            命令列表  
        else  
            命令列表  
        fi  
    fi  
else  
命令列表  
fi 
  • 多分支格式
if test -f "$1"  ;then  
  lpr $1  
elif test -d "$1";then #elif 同else if  
  (cd $1;lpr $1)  
else  
echo "$1不是文件或目录"  
fi

case

case $newval in
1)          #这里是可能值1
echo 1
;;      #表示第一个分支结束
2)           #这里是可能值 2
echo 2
;;      #第二个分支结束
*)      #表示其他可能值,必须在最后,否则他后面的语句无法执行
echo unkown
esac    #case 语句结束

while /until

while 表达式
do
  命令列表
done 
Sum=0  
i=0  
while true #true是系统的关键词 表示真  
do  
  i=`expr $i + 1`  
  Sum=`expr $Sum + $i`  
  if [ $i = "100" ]; then 
    break;  
  fi  
done  
echo $i $Sum  
最后这个程序显示的是 100 5050  

下面将这个程序再改动一下  

Sum=0  
i=0  
while [ $i != "100" ]  
do  
  i=`expr $i + 1`  
  Sum=`expr $Sum + $i`  
done  
echo $i $Sum  
改动后的程序运算结果和上面是一样 但程序比上面的要简练  
在这个循环中还可以以until做为测试条件 它正好与while测试的条件相反,也就是当条件为假时将继续执行循环体内的语句,否则就退出循环体,下面还用这个例子.  
Sum=0  
i=0  
until [ $i = "100" ]  
do  
  i=`expr $i + 1`  
  Sum=`expr $Sum + $i`  
done  
echo $i $Sum  
当i不等于100时循环 就是当条件为假时循环,否则就退出,而第一个例子是当i不等于100  
时循环,也就是测试条件为真时循环.  

for

  • 枚举用法
for 变量 in 名字列表  
do  
  命令列表  
done 
for n in {1..10}
do
  echo $n
done

for letter in a b c d e;
do
  echo $letter
done
  •   文件用法 
for file in *
do
       echo $file
done
for File in a1 a2 a3 a4 a5  
do  
  diff aa/$File bb/$File  
done 
  •    累加格式
for (( i=1;$i<10;i++ ))
do
  echo $i
done 

for(( i=1;$i<10;i=$[`expr $i + 1`] ))
do
  echo $i
done

其他循环控制语句

break 命令不执行当前循环体内break下面的语句从当前循环退出.  
continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行.
 

判断文件的属性  

格式:-操作符 filename  

-e 文件存在返回1, 否则返回0  
-r 文件可读返回1,否则返回0  
-w 文件可写返回1,否则返回0  
-x 文件可执行返回1,否则返回0  
-o 文件属于用户本人返回1, 否则返回0  
-z 文件长度为0返回1, 否则返回0.  
-f 文件为普通文件返回1, 否则返回0  
-d 文件为目录文件时返回1, 否则返回0  

测试字符串  

字符串1 = 字符串2     当两个字串相等时为真  
字符串1 != 字符串2     当两个字串不等时为真  
-n 字符串           当字符串的长度大于0时为真  
-z 字符串         当字符串的长度为0时为真  
字符串           当串字符串为非空时为真 

测试两个整数关系 

数字1 -eq 数字2     两数相等为真  
数字1 -ne 数字2     两数不等为真  
数字1 -gt 数字2     数字1大于数字2为真  
数字1 -ge 数字2      数字1大于等于数字2为真  
数字1 -lt 数字2      数字1小于数字2为真  
数字1 -le 数字2      数字1小于等于数字2为真  

逻辑测试  

-a         与  
-o        或  
!        非

 

posted @ 2017-10-24 22:19  myLittleGarden  阅读(523)  评论(0编辑  收藏  举报