Shell 基本流程控制(三)

Shell 中的流程控制语言

# Shell 脚本的阶段

## 任务 输出HelloWorld


vim hw.sh

#!/bin/bash   -- 指定脚本的解析器

#脚本的解释说明部分
#脚本的作用、作者、
#增加的内容、作用、作者

echo "Hello World!"

保存退出  wq   |  shift + zz

chmod +x hw.sh

执行
./hw.sh

Hello World!

单分支结构

if test 表达式 | [ 表达式 ] | [[ 表达式 ]];
	then
		条件为真执行的代码块
		command1
		command2
		...
fi

例子:

#!/bin/bash

#这是测试单分支结构的一个脚本

if test 1 -eq 1;
   then
        echo "hello"
fi

双分支结构

if test 表达式 | [ 表达式 ] | [[ 表达式 ]];
	then
		条件为真执行的代码块
		command1
		command2
		...
	else
		条件为假执行的代码块
		command1
		command2
		...
fi

例子:
#!/bin/bash
#这是测试单分支结构的一个脚本
if test 1 -eq 1;
   then
        echo "hello"
   else
       echo "world"
fi

#/bin/bash

if [ 1 -ne 1 ];
        then
                echo "hello"
        else
                echo "world"
fi

多分支结构

if test 表达式 | [ 表达式 ] | [[ 表达式 ]];
	then
		条件为真执行的代码块
		command1
		command2
		...
	elif test 表达式 | [ 表达式 ] | [[ 表达式 ]];
		then
			条件为真执行的代码块
			command1
			command2
			...
		else
			条件为假执行的代码块
			command1
			command2
			...
fi

例子:
#/bin/bash
read -p "输入数字:" USER_SELECTER
if [ $USER_SELECTER -eq 1 ];
        then
                echo "$USER_SELECTE"
        elif [ $USER_SELECTER -eq 1 ];
                then
                        echo "$USER_SELECTER"

                else
                        echo "既不是一也不是二"
fi

for循环

列表循环

> 循环的次数由被遍历的列表决定

for var in 列表
	do
		command
		...
done

例子:
#/bin/bash

for i in {1..5}
do
        echo "$i"
done

无列表循环

无列表循环的循环次数由传入脚本的参数个数决定

for var 
	do
		command
		...
done

例子:
#/bin/bash

for i in "$@"
do
        echo "$i"
done

类C风格的循环

循环次数由循环三要素决定(初值、条件、步长)

for(i = 0 ; i <= 10 ; i++)
	do
  		command
  		...
done

例子:

#/bin/bash

for(( i =1 ;i<=5 ;i++))
do

        echo "$i"
done

while(适合在循环次数未知的情况下使用)

条件为真的时候执行下面循环操作

While 条件表达式
Do
		Command
Done

例子:
#/bin/bash
i=0
count=0
while [ $i -le 100 ]
do        
		let count+=i
        let i+=2
done
echo "$count"

Until循环

条件为假的时候执行循环操作,反之不执行

until 条件表达式
do
  command
  ...
done

例子:
#!/bin/bash
#测试 until 循环
i=1
sum=0
until [ $i -gt 100 ]
do
        let sum+=$i
        let i++
done

echo $sum

case 多重匹配结构

case 固定值 in
	值1|3|4...)
		command
		;;2)
		command
		;;
	*)
		command
		;;
esac

例子:
#/bin/bash
while true
	do
	read -p "请输入数字:" USER_SELECTER
case  $USER_SELECTER in
        1)
                echo "1分支"
                ;;
        2)
                echo "2分支"
                ;;
        exit)
                echo "退出"
                ;;
        *)
                echo "默认分支"
                ;;
esac

done
发布了62 篇原创文章 · 获赞 32 · 访问量 2732

猜你喜欢

转载自blog.csdn.net/weixin_45627031/article/details/105224314