测试
test 条件
条件为真返回 0,条件为假返回 1
[ 条件 ]test 能够理解3中类型的表达式
1.文件测试
2.字符串比较
3.数字比较
字符串
-n STRING
the length of STRING is nonzero
-z STRING
the length of STRING is zero
STRING1 = STRING2
the strings are equal
STRING1 != STRING2
the strings are not equal
数字
eq 等于 ne 不等于
ge 大于等于 le 小于等于
gt 大于 lt 小于
文件
test
-f 存在且是正规文件
-d 存在且是目录
-h 存在且是符号链接
-b 块设备
-c 字符设备
-e 文件存在
shell分支if语句
流控制:
•在一个shell脚本中的命令执行顺序称作脚本的流。大多数脚本会根据一个或多个条件来改变它们的流。
•流控制命令:能让脚本的流根据条件而改变的命令称为条件流控制命令
•exit语句:退出程序的执行,并返回一个返回码,返回码为0正常退出,非0为非正常退出,例如:
•exit 0
条件判断
If代码返回0表示真,非0为假
if语句语法如下:
if list1
then
list2
elif list3
then
list4
else
list5
fi
例:
#!/bin/bashread -p "请输入号码: " num
if[$num= 1 ];thenecho"1"elif[$num= 2 ];thenecho"2"elseecho"输入有误!"fi
例:脚本if.sh,必须在脚本后加上适当的参数脚本才能正确执行
#!/bin/bashif["$1"="hello"];thenecho"Hello! How are you ?"elif["$1"=""];thenecho"You MUST input parameters"elseecho"The only accept parameter is hello"fi
练习:
1)检测apache是否运行,如果没有运行则启动,并记录启动的时间,保存到日志中。
2)测试ip地址主机位从2到100的机器是否存活,并把存活的机器记录到文本文件alivehost.txt内。(使用ping命令)
多个条件联合
逻辑与
if[$condition1]&&[$condition2]if[$condition -a $condition2]if[[$condition1&&$condition2]]
逻辑或
if[$condition1]||[$condition2]if[$condition -o $condition2]if[[$condition1||$condition2]]
练习:
编写脚本port.sh,执行脚本后显示系统的httpd、ftp、ssh、sendmail这些服务是否开启
casecase 语句是 shell 中流控制的第二种方式,语法如下:
case$wordin
pattern1)
list1
;;
pattern2)
list2
;;
patternN)
listN
;;
*)
list*
;;
esac
命令;;表明流应该跳转到case语句的最后,类似C语言中的break指令。
练习:建立脚本case.sh,当执行时,要求我们在键盘输入适当的值(one|two|three),当输入正确时并打印,当输入错误 时会提示你,应该输入正确的值。