Shell编程 第 6~11 章
第 6 章 流程控制(重点)、
第 6 章 流程控制(重点)
6.1 if 判断
语法
(1)单分支
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
(2)多分支
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意事项:
①[ 条件判断式 ],中括号和条件判断式之间必须有空格
②if 后要有空格
操作
- 如果25大于18,则输出OK
[root@hadoop100 ~]# a=25
[root@hadoop100 ~]# if [ $a -gt 18 ]; then echo OK; fi
OK
- 脚本
此方法不赋值输出会报错,需要改进
[root@hadoop100 ~]# cd scripts/
[root@hadoop100 scripts]# vim if_test.sh
[root@hadoop100 scripts]# cat if_test.sh
#!/bin/bash
if [ $1 = miren ]
then
echo "welcome,miren"
fi
[root@hadoop100 scripts]# chmod +x if_test.sh
[root@hadoop100 scripts]# ./if_test.sh
./if_test.sh: 第 3 行:[: =: 期待一元表达式
在条件两边加上"变量"x="字符串"x
[root@hadoop100 scripts]# vim if_test.sh
[root@hadoop100 scripts]# cat if_test.sh
#!/bin/bash
if [ "$1"x = "miren"x ]
then
echo "welcome,miren"
fi
[root@hadoop100 scripts]# ./if_test.sh
[root@hadoop100 scripts]# ./if_test.sh miren
welcome,miren
[root@hadoop100 scripts]# ./if_test.sh mirenaaa
- 加上逻辑 与-a(and) 或-o(or)
[root@hadoop100 scripts]# a=15
[root@hadoop100 scripts]# echo $a
15
[root@hadoop100 scripts]# if [ $a -gt 18 ] && [ $a -lt 35 ]; then echo OK; fi
[root@hadoop100 scripts]# a=25
[root@hadoop100 scripts]# if [ $a -gt 18 ] && [ $a -lt 35 ]; then echo OK; fi
OK
[root@hadoop100 scripts]# a=36
[root@hadoop100 scripts]# if [ $a -gt 18 ] && [ $a -lt 35 ]; then echo OK; fi
简写
[root@hadoop100 scripts]# a=20
[root@hadoop100 scripts]# if [ $a -gt 18 -a $a -lt 35 ]; then echo OK; fi
OK
- 多分支
[root@hadoop100 scripts]# vim if_test.sh
[root@hadoop100 scripts]# cat if_test.sh
#!/bin/bash
if [ "$1"x = "miren"x ]
then
echo "welcome,miren"
fi
# 输入第二个参数,表示年龄,判断属于哪个年龄段
if [ $2 -lt 18 ]
then
echo "未成年人"
elif [ $2 -lt 35 ]
then
echo "青年人"
elif [ $2 -lt 60 ]
then
echo "中年人"
else
echo "老年人"
fi
[root@hadoop100 scripts]# ./if_test.sh miren 21
welcome,miren
青年人
6.2 case 语句
语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:
(1)case 行尾必须为单词in
,每一个模式匹配必须以右括号)
结束。
(2)双分号;;
表示命令序列结束,相当于 java 中的 break。
(3)最后的*)
表示默认模式,相当于 java 中的 default。
操作
[root@hadoop100 scripts]# vim case_test.sh
[root@hadoop100 scripts]# cat case_test.sh
#!/bin/bash
case $1 in
1)
echo "one"
;;
2)
echo "two"
;;
3)
echo "three"
;;
*)
echo "number else"
;;
esac
[root@hadoop100 scripts]# chmod +x case_test.sh
[root@hadoop100 scripts]# ./case_test.sh 2
two
[root@hadoop100 scripts]# ./case_test.sh 6
number else
6.3 for 循环
语法1
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
语法2
for 变量 in 值 1 值 2 值 3…
do
程序
done
标签:11,Shell,编程,echo,sh,scripts,test,hadoop100,root
From: https://www.cnblogs.com/mr155/p/17000739.html