一、基本的控制结构
1、控制流
常见的控制流就是if、then、else语句提供测试条件,测试条件可以基于各种条件。例如创建文件是否成功、是否有读写权限等,凡是执行的操作有失败的可能就可以用控制流,注意控制流的真为0,假为1。
- 单层if语句
if 条件;then if 条件
命令 或 then 命令
fi fi
if后跟条件,如果条件为真,执行then后面的命令,而then必须放在新行,fi结束控制流,可以理解为endif;我们更推荐第一种写法,这样可以更加增强代码的可读性,使得代码层次更加清晰,下面的例子简单阐述if…else语句。
举例:$ vim simple_if
#!/bin/sh
if [ \”159\” -lt \”520\” ]; then
echo \”yes, 159 is less then 520\”
fi
- 输入变量测试
通过测试设置为接受用户输入的变量可以测知用户是否输入信息,下面的例子中测试用户键入 enter后变量addr的值是否包含任何信息。
$ vim iftest2
#!/bin/sh
echo \”Enter your addr:\”
read ADDR
if [ \”$ADDR\” = \”\” ]; then
echo \”you did not enter any information\”
fi
- grep输出检查
对grep使用if语句找出grep是否成功返回信息
#!/bin/sh
if grep \”liming\” name.file > /tmp/null 2>&1; then
echo \”liming is in the file\”
else
echo \”no liming is not in the file\”
fi
2、if…else语句
if 条件;then
命令1
else
命令2
fi
检查运行脚本的用户,环境变量用作测试条件,即LOGNAME是否包含root值,这类语句是加在脚本开头作为安全性准则的普遍方法,
#!/bin/sh
if [ \”$LOGNAME\” != \”root\” ]; then
echo \”you need to be root to run this script\” > &2
exit 1
else
echo \”yes indeed you are $LOGNAME proceed\”
fi