流程控制、read读取控制台输入
1 if判断
1 格式
if [ condition ];then
语句体
fi
或者
if [ condition ]
then
语句体
fi
或者
if [ condition ]
then
语句体
elif [ condition ]
then
语句体
fi
注意:if和elif后面要有空格,condition前后要有空格
2 案例
需求:如果输入参数为1,输出one,输入参数为2,输出two,如果输入其他什么也不做
[root@master data]# cat test.sh
if [ $1 -eq 1 ];then
echo one
elif [ $1 -eq 2 ]
then
echo two
fi
[root@master data]# sh test.sh 1
one
[root@master data]# sh test.sh 2
two
[root@master data]# sh test.sh 3
[root@master data]#
2 case语句
1 格式
case $变量名 in
1)
程序
;;
2)
程序
;;
*)
程序
esac
双分号表示命令序列结束,相当于Java中的break
最后的*)表示默认模式
2 案例
[root@master data]# cat test.sh
case $1 in
1)
echo one
;;
2)
echo two
;;
*)
echo 其他
esac
[root@master data]# sh test.sh 1
one
[root@master data]# sh test.sh 3
其他
[root@master data]#
3 for循环
1 格式
for((初始值;循环控制条件;变量变化)
do
程序
done
或
for 变量 in 值1 值2 值3
do
程序
done
2 案例
需求1:从1加到100
vim test.sh
s=0
for((i=1;i<=100;i++))
do
s=$[s+i]
done
echo $s
需求2:打印输入参数
vim test.sh
for i in 1 2 3 4
do
echo $i
done
4 while循环
1 格式
while [ 判断条件 ]
do
程序
done
2 案例
需求:从1累加到100
vim test.sh
s=0
i=1
while [ $i -le 100 ]
do
s=$[s+i]
i=$[i+1]
done
echo $s
5 read读取控制台输入
1 格式
read -t 时间 -p 提示 变量
-t 限制输入时间,单位为秒
-p 提示信息
2 案例
控制台输入你擅长语言,并且输出,限时5秒
vim test.sh
read -t 5 -p "请输出语言" langugage
echo $language
[root@master data]# sh test.sh
请输出语言java
java
[root@master data]#