基本格式:
if [ ]
then
...........
elif [ ]
then
............
else
............
fi
(注意 if语句 的空格,不然很容易报错) --> if [ $a -gt $b ]
逻辑判断表达式:
-gt 大于 >
-lt 小于 <
-eq 等于 ==
-ge 大于等于 >=
-le 小于等于 <=
-ne 不等于 !=
&& || 结合的多重条件:
( 5<a<10 )
if [ $a -gt 5 ] && [ $a -lt 10 ]
相当于 if [ $a -gt 5 -a $a -lt 10 ] ( -a 是and 意思 )
( a<5 或者 a>10 )
if [ $a -lt 5 ] || [ $a -gt 10 ]
相当于 if [ $a -lt 5 -o $a -gt 10 ] ( -o 是 or 意思 )
简单的if逻辑在命令行中的写法:
原脚本
用;作为语句的分隔符 书写简单的逻辑
直接在命令行中一行行写也可以
判断文件、目录属性:
[ -f 文件名 ] 普通文件是否存在?
[ -d 文件名 ] 目录是否存在?
[ -e 文件名 ] 文件或目录是否存在?
[ -r 文件名 ] 可读?
[ -w 文件名 ] 可写?
[ -x 文件名 ] 可执行?
举例: 若文件存在时候则输出1,若文件不存在则写内容到此新建文件中
root用户下,读写都是超级权限,而执行权限则需要对应的用户设置。
判断变量的值是否存在:
[ -z “ $变量名” ] 变量是否为空 (变量名一定要 ”” 不然容易出错)
[ -z “ $变量名” ] 变量是否不为空 ,相当于[ ! -z “ $变量名” ]
加一个 ! 则是取反的意思。
命令作为判断条件
直接用if判断一条命令是否成功,不用加 [ ] 。
不管成功与否都会有额外的命令显示,成功会写出命令,不成功会报错。
不管命令结果如何都重定向到 &>/dev/null 中,这样命令结果就不会显示出来。
判断一个文件中是否包含某个内容
if grep –q ‘ 123 ‘ 1.sh; then echo “1.sh文件中包含有123关键词”; fi
grep –q 中 -q 的作用是——即使过滤到了内容也不要打印出来。
原本查出的内容加上 –q 后就不再显示了,但命令却是执行成功了的。
大小判断可以变为
[ ] 中不能用<, ==, > ,放入()才行。
if( ( $a<1 ) ); then... 等价于 if [ $a –lt 1 ]; then....