条件测试及选择
-
条件测试
- shell测试的依据
- 测试操作
- 几种可用的测试方式
- 正常的命令行
- [root@localhost ~]# id taoge &> /dev/null
[root@localhost ~]# echo $?
0
[root@localhost ~]# id haha &> /dev/null
[root@localhost ~]# echo $?
1 - test -选项 参数…
- [测试表达式]
- [root@localhost ~]# [ 100 -gt 40 ] //中括号和100之间有一个空格
- [root@localhost ~]# echo $?
0
- 常用的测试选项
- 检查文件状态
- -e: 存在即为真、-d:目录存在即为真、-f:文件存在即为真
- 比较整数大小
- -gt、-ge、-eq、-ne、-lt、-le
- [root@localhost ~]# [ -d /root ]
[root@localhost ~]# echo $?
0 - 字符串比对
- ==、 !=
- [root@localhost ~]# [ $USER == root ] //说明当前用户时root
[root@localhost ~]# echo $?
0
-
if选择结构
- if单分支处理
- if双分支处理:当条件满足/不满足时,分别做xx、yy处理
- 如果软件包foo未装,则将其安装
- 否则,放弃安装
- 格式
if 【条件测试】;then
命令序列xx
else
命令序列yy
fi - 例如:
[root@localhost ~]# ./if01.sh
haha
[root@localhost ~]# cat if01.sh
#! /bin/bash
if [ 10 -eq 10 ]; then
echo ‘haha’
else
echo ‘nihao’
fi
例如:测试用户是否存在
[root@localhost ~]# ./if03.sh
username: taoge
taoge exist
[root@localhost ~]# cat if03.sh
#! /bin/bash
read -p 'username: ’ name
id $name &> /dev/null
if [ $? -eq 0 ]; then
echo $name exist
else
echo $name does not exist
fi
- if多分支处理
-
列表循环:for循环结构
- 列表循环场景
- 给定一批对象,反复执行类似的操作
- 献血人==》采血
- 购票者==》售票
- 给定一批对象,反复执行类似的操作
- for循环处理
- 遍历/列表式循环
- 根据变量的不同取值,重复执行xx操作
for 变量名 in 值列表
do
命令序列
done - 例如:批量创建用户
[root@localhost ~]# vim for01.sh
[root@localhost ~]# ./for01.sh
xixi create successfully
haha create successfully
ffe create successfully
gege create successfully
meimei create successfully
[root@localhost ~]# cat for01.sh
#!/bin/bash
for a in xixi haha ffe gege meimei
do
useradd $a &> /dev/null
echo $a create successfully
done - 循环的列表值,可以不参与循环执行的重复操作
- 造数工具:{起始值…结束值}
[root@localhost ~]# cat -n for02.sh
1 #!/bin/bash
2 for a in {1…20}
3 do
4 echo hello
5 done - 利用命令替换取值
- 列表循环场景