shell编程之case语句与循环语句

目录

一、case语句

case语句结构

应用实例

二、for循环语句

for语句结构

应用实例

三、while循环语句

语句结构

 应用实例

shell函数应用

应用实例


一、case语句

case语句结构

适用以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个变量的不同取值。

语法结构

case  变量值  in

模式1)

        命令序列1

        ;;

模式2)

        命令序列2

        ;;

        ......

        *)

        默认命令序列

        esac

  • case行尾必须为单词“in”,每一模式必须以右括号“)”结束。
  • 双分号 “;;”表示命令序列的结束。
  • 模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”:还可以用竖杠符号“|”表示或,如“A|B”。
  • 最后的“*)”表示默认模式,其中的*相当于通配符。

shell编程之case语句与循环语句_第1张图片

 

应用实例

[root@localhost]# vim 123.sh
#!/bin/bash
read -p "请输入一个字符:" aa
case "$aa" in
[0-9])
        echo "你输入的是数字"
        ;;
[a-z]|[A-Z])
        echo "你输入的是字母"
        ;;
*)
        echo "你输入的是符号"
esac
~  
[root@localhost]# chmod +x 123.sh 
[root@localhost]# ./123.sh 
请输入一个字符:3
你输入的是数字
[root@localhost]# ./123.sh 
请输入一个字符:e
你输入的是字母
[root@localhost]# ./123.sh 
请输入一个字符:#
你输入的是符号

二、for循环语句

for语句结构

需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。在这里,“取值列表”称为for语句的执行条件,其中包括多个属性相同的对象,需要预先指定

for 变量名 in 取值列表

do

        命令序列

done

应用实例

累加求和

#!/bin/bash
sum=0                   第一次 i=1  sum=0   sum₁=1+0(i₁+sum)=1
for i in {1..100}       第二次 i=2  sum₁=1  sum₂=2+1(i₂+sum₁)=3
do                      第三次 i=3  sum₂=3  sum₃=3+3(i₃+sum₂)=6
let sum=$i+$sum         第四次 i=4  sum₃=6  sum₄=4+6(i₄+sum₃)=10
#sum=$[i+sum]                               .
done                                         .
echo sum=$sum                                .    
                                             .
                                             .
                        第十次 i=10  sum₉=45  sum₁₀=10+45(i₁₀+sum₉)=55

测试c类地址  1-254台机器哪些存活,并且将存活的机器ip地址导入到host.txt 文件中

#!/bin/bash
for i in {1..254}
do
{
ping  -c2  -w2  192.168.91.$i &>/dev/null
if  [ $? -eq 0 ]
then
echo  host $i is online
echo "$i" >> host.txt
else
echo "host $i is offline"
fi
}&
done
wait

输出0-100奇数

#!/bin/bsah
sum=0
for i in {1..100..2}
do
let sum=$i+$sum
done
echo sum=$sum

三、while循环语句

语句结构

可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。因此,循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时侯使测试条件不再成立,从而结束循环。

while  条件测试操作

do

        命令序列

done

shell编程之case语句与循环语句_第2张图片 

 应用实例

#!/bin/bash
price=`echo $[RANDOM%1000+1]`
time=0
while true
do
read -p "请输入商品价格(1-1000):" num
let time++
if [ $price -eq $num ]
then
echo "恭喜你猜对了"
echo "$time 次"
exit 1
elif [ $price -lt $num ]
then
echo "您猜的价格高了"
else
echo "您猜的价格低了"
fi
done

shell函数应用

因为有一些命令是需要反复调用执行的,若每次使用同一命令就重复写一遍,就会导致代码量很大,行数特别多。为解决该问题可以将命令序列按格式写在一起,以便可以重复的使用。

基本格式如下,其中[function]是可选的,表示该函数的功能,这个是可以省略掉的;函数名后面加一个(),里面是没有内容的;而我们执行的命令序列放在{}里面的,[return x]的作用是当命令序列执行完后返回给系统一个值,该项也是可以省略的。若有些时候我们调用的函数很多,那么我们可以一次写好几个。

[function]函数名(){

        命令序列

        [return x]

}

应用实例

#!/bin/bash
sum(){
read -p "亲输入第一个数:" NUM1
read -p "亲输入第二个数:" NUM2
echo "你输入的两个数为:$NUM1 和 $NUM2"
SUM=$(( $NUM1 + $NUM2 ))
echo "两个数的和为:$SUM"
}
sum


[root@mjy ~]# sh ./sum.sh
亲输入第一个数:1
亲输入第二个数:2
你输入的两个数为:1 和 2
两个数的和为:3

你可能感兴趣的:(shell脚本,linux,python,centos)