if-then使用
xin@xin ~/Test $ cat a.sh
#!/bin/bash
if date ; then
echo "成功执行!"
fi
xin@xin ~/Test $ bash a.sh
2016年 01月 07日 星期四 15:27:25 CST
成功执行!
if-then-else
xin@xin ~/Test $ cat b.sh
#!/bin/bash
if date ; then
echo "执行成功!"
else
echo "执行失败!"
fi
xin@xin ~/Test $ bash b.sh
2016年 01月 07日 星期四 15:30:00 CST
执行成功!
xin@xin ~/Test $ vim b.sh
xin@xin ~/Test $ cat b.sh
#!/bin/bash
if data ; then
echo "执行成功!"
else
echo "执行失败!"
fi
xin@xin ~/Test $ bash b.sh
b.sh: 行 2: data: 未找到命令
执行失败!
test命令使用。这里指的是[]的使用。条件成立的时候,test命令就会退出冰返回状态码0。
if test condition ; then
commands
fi
改写成
if [ condition ] ; then
commands
fi
这里要先说明比较符号的使用
n1 -eq n2 检查n1是否和n2相等
n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否小于或等于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2
xin@xin ~/Test $ cat a.sh
#!/bin/bash
var1=10
var2=11
if [ $var1 -gt 5 ] ; then
echo "$var1大于5"
fi
xin@xin ~/Test $ bash a.sh
10大于5
字符串比较
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是比str2小
str1 > str2 检查str1是比str2大
-n str1 str1的长度是否非0
-z str1 检查str1的长度是否为0
xin@xin ~/Test $ cat b.sh
#!/bin/bash
name=xin
if [ $USER = $name ] ; then
echo "当前用户和$name相同"
fi
xin@xin ~/Test $ bash b.sh
当前用户和xin相同
test命令中大写字母会被当成小于小写字母。sort命令排序时,小写字母会先出现。
对文件状况的判断
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-0 file 检查文件是当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
xin@xin ~/Test $ cat c.sh
#!/bin/bash
if [ -d /home/$USER ] ; then
echo "$USER用户家目录存在";
fi
xin@xin ~/Test $ bash c.sh
xin用户家目录存在
复合条件测试
[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]
双圆号的使用
用于在表达式中进行高级数学运算
xin@xin ~/Test $ cat d.sh
#!/bin/bash
var1=3
if (( $var1 ** 2 < 90 )) ; then
echo "$var1的平方小于90"
fi
xin@xin ~/Test $ bash d.sh
3的平方小于90
使用双方括号
他提供了模式匹配
xin@xin ~/Test $ cat e.sh
#!/bin/bash
if [[ $USER == x* ]] ; then
echo "你好$USER"
else
echo "无法识别的用户"
fi
xin@xin ~/Test $ bash e.sh
你好xin
case 语句
xin@xin ~/Test $ cat f.sh
#!/bin/bash
case $USER in
xin)
echo "你好xin";;
bing)
echo "你好bing";;
*)
echo "无法识别的用户";;
esac
xin@xin ~/Test $ bash f.sh
你好xin