SHELL(二)

20.7 if特殊用法

20.8 case判断(上)

20.9 case判断(下)

20.10 for循环

20.11 while循环(上)

20.12 while循环(下)

20.13 break跳出循环

20.14 continue结束本次循环

20.15 exit退出整个脚本

 

 

20.7 if特殊用法

if [ -z "$a" ]  这个表示当变量a的值为空时会怎么样

if [ -n "$a" ] 表示当变量a的值不为空

if grep -q '123' 1.txt; then  表示如果1.txt中含有'123'的行时会怎么样

if [ ! -e file ]; then 表示文件不存在时会怎么样

if (($a<1)); then …等同于 if [ $a -lt 1 ]; then…

[ ] 中不能使用<,>,==,!=,>=,<=这样的符号

举例:

脚本过程注意空格

tmp下没有666这个文件

 

20.8 case判断(上)

Caseif类似

Commond,除此之外

举例:

#!/bin/bash

read -p "Please input a number: " n                      ---让用户输入数字,返回值为n

if [ -z "$n" ]                                                --返回的n值进行判断

then                                                            

    echo "Please input a number."                --提示请输入值

    exit 1                                                        --当用户运行完脚本运行echo$? 的时候会返回1

fi

n1=`echo $n|sed 's/[0-9]//g'`                        --输出是否为纯数字,如果是数字,则清空,赋值给$n1,

 

if [ -n "$n1" ]                                                    --判断$n1是否为空(即$n1不是纯数字),

 

then

 echo "Please input a number."                    --为空再次提示输入数字

 exit 1                                                              --退出

fi

 

if [ $n -lt 60 ]&& [ $n -ge 0 ]                             ---当数值小于60 且大于等于0  提示tag1

then

    tag=1

elif [ $n -ge 60 ] && [ $n -lt 80 ]   ---当数值大于等于60并且小于80    提示tag2

then

    tag=2

elif [ $n -ge 80 ]  && [ $n -lt 90 ]        ---当数值大于等于80且小于90   提示tag3

then

    tag=3

elif [ $n -ge 90 ] && [ $n -le 100 ]        ---当数值大于等于90且小于100 提示tag4

then

    tag=4

else                                                       ---如果不符合上述条件则tag=0

    tag=0

fi

case $tag in                                    --当你的tag值为1/2/3/4、的时候执行如下

    1)

echo "not ok"                    ---tag1提示not ok 

        ;;

    2)

        echo "ok"                            --tag2提示 ok

        ;;

    3)

        echo "ook"                             -tag3提示 ook

        ;;

    4)

        echo "oook"                            ---tag4提示 oook

        ;;

    *)                                                --除此之外的执行tag=0

        echo "The number range is 0-100."                --提示重新输入数值范围为0-100

        ;; 

esac

测试:

 

 

20.10 for循环

语法:for 变量名 in 条件; do …; done

例如:计算1-100的值

#!/bin/bash

sum=0

for i in `seq 1 100`

do

    sum=$[$sum+$i]

done

echo $sum

例如:文件列表循环

 #!/bin/bash

cd /etc/             //优先进入etc

for a in `ls /etc/`

do

    if [ -d $a ]

    then

       ls -d $a

    fi

done

 

20.11 while循环(上)

结构如下

例如每隔半分钟检查一下系统的负载,当负载大于10的时候就发一封邮件,隔30 秒执行一次

#!/bin/bash

while :

do

    load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`

    if [ $load -gt 10 ]

    then

        top|mail -s "load is high: $load" asldkfls@11.com

    fi

    sleep 30

done

 

 

20.12 while循环(下)

案例2:加入continue,如果不是数字则继续循环,否则中断

#!/bin/bash

while :

do

    read -p "请输入数字: " n

    if [ -z "$n" ]

    then

        echo "请输入对应数值."

        continue

    fi

    n1=`echo $n|sed 's/[0-9]//g'`

    if [ -n "$n1" ]

    then

        echo "您只能输入数字."

        continue

    fi

    break

done

echo $n

小技巧:LANG=zh_CN.UTF-8  改回中文显示

 

 

20.13 break跳出循环

例如执行到3就跳出循环

#!/bin/bash

for i in `seq 1 5`

do

    echo $i

    if [ $i == 3 ]   

    then

        break

    fi

    echo $i

done

echo END

 

 

20.14 continue结束本次循环

将break改成continue

执行:

 

 

20.15 exit退出整个脚本

还是修改continueexit

执行

 

 

扩展
select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值