Shell编程进阶

1>流程控制

 ####1.1>if语句
 ####1.2>case语句
 ####1.3>for循环
 ####1.4>while循环


流程控制

 过程式编程语言:

   顺序执行

   选择执行

   循环执行



条件选择if语句

 选择执行:

 注意:if语句可嵌套

 单分支

   if 判断条件;then

      条件为真的分支代码

   fi

 双分支

   if 判断条件; then

      条件为真的分支代码

   else

      条件为假的分支代码

   fi


If语句

 多分支

   if 判断条件1; then

    条件为真的分支代码

   elif 判断条件2; then

    条件为真的分支代码

   elif 判断条件3; then

    条件为真的分支代码

   else

    以上条件都为假的分支代码

   fi

 逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

   下面我们来举个例子看看if语句:

#!/bin/bash
#
read -p "Please put your age: " age
if expr $age + 1 &>/dev/null ;then
if [ "$age" -ge 18 ];then
echo "Yor are very old"
exit
fi
echo "Yor are a baby"
exit
fi
echo "your input is not interger!"
exit 100



#!/bin/bash
read -p "Please input your score: " score
if [[ ! "$score" =~ ^[0-9]+$ ]];then
echo "Your score is not interger"
exit 1
fi
if [ "$score" -lt 60 ];then
echo "You need study hard"
elif [ "$score" -ge 60 -a "$score" -lt 80 ];then
echo "your score is soso"
elif [ "$score" -ge 80 -a "$score" -le 100 ];then
echo "Your score is very good"
else
echo "Your score is invalid"
fi
unset score

   上面两个例子就是简单的if语句格式脚本



条件判断:case语句

   case 变量引用in

   PAT1)

      分支1

      ; ;

   PAT2)

      分支2

      ; ;

   *)

      默认分支

      ; ;

   esac

   下面我们也来根据实例看看case语句格式

#!/bin/bash
read -p "input a number: " num
case $num in
[1-3])
echo "num is 1,2,3"
;;
4|5|6)
echo "num is 4,5,6"
;;
9|11|20)
echo "num is 9,11,20"
;;
*)
echo "num is other digit"
esac



#!/bin/bash
read -p "Please input Y/N: " ans
ans=`echo $ans | tr "[[:upper:]]" "[[:lower:]]"`
case $ans in
y|yes)
echo yes
;;
n|no)
echo no
;;
*)
echo yes/no?
esac

   上面就是两个简单的case语句格式的脚本


循环

 循环执行

   将某代码段重复运行多次

   重复运行多少次:

      循环次数事先已知

      循环次数事先未知

   有进入条件和退出条件

 for, while, until


for循环

 for 变量名in 列表;do

   循环体

 done

 执行机制:

   依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束



 列表生成方式:

   (1) 直接给出列表

   (2) 整数列表:

      (a) {start..end}

      (b) $(seq[start [step]] end)

   (3) 返回列表的命令

      $(COMMAND)

   (4) 使用glob,如:*.sh

   (5) 变量引用;

      $@ ,*

   下面是两个for循环的脚本例子



#!/bin/bash
netid=172.18.253
> /root/ip.log
for id in {1..254};do
{
if ping -c1 -W1 $netid.$id &> /dev/null ;then
echo $netid.$id |tee -a /root/ip.log
fi
}&
done
wait



#!/bin/bash
> /root/user.log
for i in {1..10};do
if id user$i &> /dev/null ;then
echo user$i is exist
exit 1
fi
useradd user$i && echo user$i is created
password=``tr -dc 'a-zA-Z0-9' < /dev/urandom |head -c 8
echo user$i:$password >> /root/user.log
echo $password |passwd --stdin user$i &> /dev/null
passwd -e user$i &> /dev/null
done


while循环

 while CONDITION; do

   循环体

 done

 CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环

 因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

 进入条件:CONDITION为true

 退出条件:CONDITION为false

   下面我们还是根据两个实例看看while循环脚本的格式

#!COUNTER=0
while [ $COUNTER -lt 5 ]
do
COUNTER='expr $COUNTER+1'
echo $COUNTER
done



#!echo 'type <CTRL-D> to terminate'
echo -n 'enter your most liked film: ''
while read FILM
do
echo "Yeah! great film the $FILM"
done

   上面就是我们的两个简单的while循环语句脚本格式,是不是很简单

   今天的shell编程进阶就介绍到这里,下次再给大家带来精彩的分享,最后给大家分享几个用shell编写的好玩脚本,有感兴趣的朋友可以去我的博客网站下载(http://www.yumufan.top)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值