shell-bash之循环和条件结构

循环结构

until循环

语法格式:

until 测试命令; do 命令块; done

只要测试命令返回非零值就执行命令块。其返回值是命令块中最后一个被执行的命令的返回值。如果命令
块没有被执行则返回0;

例子

使用until实现1到100的累加

#!/bin/bash

n=1
sum=0

until [ $n -gt 100 ];do
        let sum+=n
        let n++ 
done

echo $sum

while循环

语法格式:

while 测试命令; do 命令块; done

只要测试命令返回零就执行命令块。其返回值是命令块中最后一个被执行的命令的返回值。如果命令块没有
被执行则返回零。

例子

使用while实现对/etc/passwd的逐行读取,并输出总行数

   #!/bin/bash
   
   n=0
   while read line;do
           let n++
           echo $line
   done < /etc/passwd
   
   echo $n

for循环

语法格式:

  1. for 变量 [in 单词]; do 命令块; done

    将单词扩展成一个列表,然后把结果中列表的每个元素都赋值给变量并执行一次命令块。如果没有[in 单
    词]这部分,则for 依次对每个位置参数都执行一次命令块,就好像指定了"in $@"。其返回值是命令块中最后一个被执行的命令的返回值。如果对单词的扩展没有得到任何元素,则不执行任何命令,并返回零。

  2. for (( 表达式一; 表达式二; 表达式三)); do 命令块; done

例子:

使用for输出1到10

   #!/bin/bash
  
   for i in `seq 1 10`;do
           echo $i
   done

条件结构

if

语法格式

if 测试命令一; then
命令块一;
[elif 测试命令二; then
命令块二;]

[else
其它命令块;]
fi

例子

使用while和if实现的一个猜数字的脚本

[root@localhost ~]# cat guess_number.sh 
#!/bin/bash

guess_number(){
t=$1
while :;do
        read -p "Input the number:" n
        if [ $n -gt $t ];then
                echo "retype a smaller number"
        elif [ $n -lt $t ];then
                echo "retype a bigger number"
        else
                echo "Right!!!"
                exit 0
        fi
done
}

if [ $# -eq 0 ];then
        echo "请输入参数"
        exit 1
fi

guess_number $1
[root@localhost ~]# bash guess_number.sh 
请输入参数
[root@localhost ~]# bash guess_number.sh 9
Input the number:2
retype a bigger number
Input the number:10
retype a smaller number
Input the number:9
Right!!!

case

语法格式

case 值 in
模式1)
command1
command2

commandN
;;
模式2)
command1
command2

commandN
;;

esac

例子

[root@localhost ~]# cat case.sh 
#!/bin/bash

echo -n "请输入一个动物的名称:"
read animal
echo -n "$animal有"
case $animal in
        马|狗|猫)
                echo -n "四"
        ;;
        人|猴)
                echo -n "两"
        ;;
        *)
                echo -n "未知"
        ;;
esac

echo  "条腿"
[root@localhost ~]# bash case.sh 
请输入一个动物的名称:人
人有两条腿
发布了22 篇原创文章 · 获赞 2 · 访问量 601

猜你喜欢

转载自blog.csdn.net/weixin_42955452/article/details/104416637