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