Shell流程控制


While循环简单案例:

 while语句结构

    while 条件语句
    do
    action
    done;

    实例1:
    #!/bin/sh
    i=10;
    while [[ $i -gt 5 ]];do
        echo $i;
        ((i--));
    done;

    运行结果:========================
    sh while1.sh
    10
    9
    8
    7
    6

实例2:(循环读取文件内容:)

#!/bin/sh
while read line;do
echo $line;
done < /etc/Monkey.sh;
运行结果:===================
sh while2.sh
# Do not remove the following line, or various programs
# that require network functionality will fail.<precode_snippet_id="2005939"
#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done


实例3:while循环可用于读取键盘信息。

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的电影名: '
while read FILM
do
    echo "是的!$FILM 是一部好电影"
done


if命令

if 语句语法格式:
if condition
then
    command1
    command2
    ...
    commandN
fi

写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo"true"; fi


if else if else-if else结合使用

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi


if else语句经常与test命令结合使用,如下所示:

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi
 
输出结果:
两个数字相等!

for 循环

数组遍历

for i in *
do
       echo $i
done
!
: <<!
以下是for脚本所在目录,for循环列表的结果:
DiTing
Linux_rmdjt
shell
variate.sh
打怪升级
模块
!

另一种遍历方式

ls > ls.txt
for i in $(cat ls.txt)
do
       echo $i
done
!

函数传递

#注意 $@ 加上引号和不加是有区别的

nubset()
{
       for str in "$@"
       do
              echo $str
       done

}
nubset 1 2 3 4
nubset 1,2,3,4
nubset "this is nub"
nubset "this2,is2,nub2"
nubset we will be fine


自然数的遍历使用 {}

for i in {1..5}
do
       echo "go $i home"
done
 
for i in {0..10..2}
do
    echo "go $i home"
done
 

经典循环
for (( i = 0; i < 10; i++ ))
do
       echo $i
done

以上代码均经过测试,可用,点击进入 原创地址

 

复合型实例

nub=(137 237 337 437 537  637)
employee=(小明 小张 小红 小王 小竹 小胡)
setnub=6
: <<!
array_set()
{
       for (( i = 0; i < $setnub; i++)); do
             
              if [[ $@ -eq $nub[i] ]];then
                    echo ${nub[$i]}${employee[$i]}
              fi
       done
      
}
array_set 437
!

for (( i = 0; i <$setnub; i++ )); do
       echo ${nub[$i]}${employee[$i]}
done


--------------------------------------无限循环命令------------------

 

:<<!
while :
do
	command
done

#或者
while true
do
	command
done

#或者
for (( ; ; ))

!

until命令

until循环执行一系列命令直至条件为真时停止。

until循环与while循环在处理方式上刚好相反。

一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。

until 语法格式:

until condition
do
    command
done

Case

#--下面的脚本提示输入1到4,与每一种模式进行匹配: ---

: <<!
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac
!

 #---跳出循环------------break跳出后续循环---------------------------------

: <<!
while :
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            break
        ;;
    esac
done
!
#执行以上代码,输出结果为:
: <<!
输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束
!

#---跳出循环------------continue---------------------------------

 

: <<!
while :
do
    echo -n "输入 1 到 5 之间的数字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!"
            continue 
            echo "游戏结束"
        ;;
    esac
done
!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值