4.1. 3 Shell流程控制语句

 

 If条件判断语句

If(表达式)#if ( Variable in Array )

语句1

else

语句2

fi


案例一,测试目录是否存在,不存在则新建(注意,中括号之间必须要空格)

#!/bin/sh

#judge direxist

if [  !  -d /data/20140515 ];then

mkdir  -p/data/20140515

else

echo  “This DIR isexist,Please exit …..”

fi

逻辑运算符解析:

-f判断文件是否存在eg:if [ -f filename ]

-d判断目录是否存在eg:if [ -d dir     ]

-eq等于应用于:整型比较

-ne不等于应用于:整型比较

-lt小于应用于:整型比较

-gt大于应用于:整型比较

-le小于或等于应用于:整型比较

-ge大于或等于应用于:整型比较

-a双方都成立(and)逻辑表达式a 逻辑表达式

-o单方成立(or)逻辑表达式o 逻辑表达式

-z 空字符串

案例三,多个条件测试判断

#!/bin/sh

scores=80;

if [[ $scores -gt 85]]; then

echo"very good!";

elif [[ $scores -gt 75]]; then

echo"good!";

elif [[ $scores -gt 60 ]]; then

echo"pass!";

else

       echo "no pass!";

fi;

 

 循环语句for

For 变量in 字符串

do

语句1

done

案例一,打印seq多个数

#!/bin/sh

for   i   in `seq 15`

do

echo  “NUMis $i”

done

案例二,找到相关log,然后批量打包

#!/bin/sh

for   i   in `find /var/log  -name “*.log”`

do

tar –czf 2014log.tgz $i

done

循环语句while

while 条件语句

do

语句1

done

案例一,while条件判断数字

#!/bin/sh

i=1;

while [[ $i -lt 10 ]];do

echo $i;

((i++));

done;

案例二,while逐行读取某个文件内容

#!/bin/sh

while read line

do

echo $line;

done< /etc/hosts

Case选择语句

case $arg in 

pattern1)

语句1

;; 

pattern2)

语句2

;; 

*)

语句3

;; 

esac

案例一,创建选择参数脚本

#!/bin/sh

case $1 in

monitor_log)

monitor_log

;;

archive_log)

archive_log

;;

*          )

echo "Usage:{$0 monitor_log | archive_log |help}"

;;

esac