if 判断
在shell中if条件判断语句和我们的C、python等语言不同,shell的if语句条件必须用[ ]括起来,另外[ ]里外都需要用空格与周围隔开(例如[ a == b ]),否则会报错
if基本语法
if [ 表达式 ];then ;fi
或
if command;then ;fi
其中[ 表达式 ] 等同于test命令,man test
条件测试类型
1.整数测试
-eq 测试两个整数是否相等
-ne 测试两个整数是否不等
-gt 测试一个数是否大于另一个数
-lt 测试一个数是否小于另一个数
-ge 大于或等于
-le 小于或等于
2.字符串测试(字符串两边要有空格)
== 等于
!= 不等
> 大于
< 小于
-z string 测试指定字符是否为空,空着真,非空为假
-n string 测试指定字符串是否为不空,空为假 非空为真
3.文件测试
-e FILE 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试文件对当前用户是否可读
-w file 测试文件对当前用户是否可写
-x file 测试文件对当前用户是都可执行
4.组合测试
-a: and
-o: or
!: 非
5.&&运算符
command1 && command2
&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;命令之间使用 && 连接,实现逻辑与的功能。
如:
test -f /var/log/messages && echo ok
6.||运算符
command1 || command2
||则与&&相反。如果||左边的命令未执行成功,那么||右边的命令就会执行
如 test -f 123 || echo error
if练习:
1.判断当前用户是否是root,不是的话退出,如果是的话显示一下root的登录shell
id=`id -u`
if [ $id -eq 0 ]
then
grep "^root" /etc/passwd|cut -d: -f7
else
exit
fi
2.命令行输入任意三个整数,判断最大的数
MAX=$1
if [ $2 -ge $1 ]; then
MAX=$2
fi
if [ $3 -ge $MAX ]; then
MAX=$3
fi
echo "the max number is $MAX."
3.用Shell脚本,判断/bin/nohup是不是可执行文件,如果是将其拷贝到/tmpdir目录下,判断如果/tmpdir目录不存在,自动创建。
if [ -x /bin/nohup ]
then
if [ ! -d /tmpdir ]
then
mkdir /tmpdir
fi
cp /bin/nohup /tmpdir
fi