6. Shell 流程控制

1. 条件选择流程

1.1 if

#!/bin/bash
# if 格式
#if condition
#then
#    command1 
#    command2
#    ...
#    commandN 
#fi

# 如果写出一行一般格式如下:
# if [ condition ]; then command1; fi

num1=10
num2=20

if [ $num1 -lt $num2 ]
then
    echo 'true'
fi


if [ $num1 -lt $num2 ] ; then echo 'true'; fi
if test $num1 -lt $num2 ; then echo 'true'; fi

1.2 if else

#!/bin/bash
# if else 格式
#if condition
#then
#    command1 
#    ...
#else
#    command1
#    ...
#fi

num1=10
num2=20

if [ $num1 -gt $num2 ]
then
    echo 'true'
else
    echo 'false'
fi

1.3 if else-if else

#!/bin/bash
# if else-if else 格式
#if condition
#then
#    command1 
#    ...
#elif condition
#    command1
#    ...
#then
#    command1
#    ...
#else
#    command1
#    ...
#fi

num1=10
num2=20

if [ $num1 -eq $num2 ]
then
    echo '=='
elif  [ $num1 -gt $num2 ]
then
    echo 'true'
else
    echo 'false'
fi

2. 循环控制

2.1 for

#!/bin/bash
#格式
#for var in item1 item2 ... itemN
#do
#    command1
#    command2
#    ...
#    commandN
#done
#
#for var in item1 item2 ... itemN; do command1; command2… done;

loop_val=(1 2 3 4 5)
for val in ${loop_val[@]}
do
    echo $val
done

for val in ${loop_val[@]} ; do echo $val; done

for str in 'This is a string'
do
    echo $str
done

2.2 while

#!/bin/bash
#while condition
#do
#    command
#done


index=1
while [ $index -le 5 ]
do
    echo $index
    let "index++"
done

2.3 until 循环

#!/bin/bash
#until condition
#do
#    command
#done

index=1
until [ $index -gt 5 ]
do
    echo $index
    let "index++"
done

2.4 case

esac(就是case反过来)作为case语句的结束标记,每个case分支用右圆括号,用两个分号表示break。

#!/bin/bash
#case 值 in
#模式1)
#    command1
#    ...
#    ;;
#模式2)
#    command1
#    ...
#    ;;
#esac

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

3. 跳出循环

3.1 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

3.2 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
posted @ 2016-09-21 15:32  zyh_think  阅读(128)  评论(0编辑  收藏  举报