1. if command 的格式
cat tt
aaaa
bbb
ccc
ddd
eee
ggg
[zengtai.csm@login1.cm4 ttt]$ if grep -q kk tt;then echo "cc is ok";elif grep -q ee tt;then echo ee is ok;else echo NO;fi
eee
ee is ok
(1). shell 支持多个命令在同一行,多个命令之间用;隔开
(2). if 的工作方式: 我们知道我们shell 没执行一个命令都会有一个返回码;如果这个command 执行后返回码是 0 这会执行then后面的一系列命令;
其实 if test if 【】 基本的原理也是这样,并非是之前其他语言中的那种判断条件的真假来执行后面的命令。
if test str1 == str2 ;then commands;if
如果str1 == str2 两个字符串相等;test 命令的返回码就是0 就会执行then后面的一系列命令;test 的作用同 [ ]
2. if test 命令格式
if test $var1 -gt $var2;then # 整数比较大小【必须是整数】
echo "$var1 > $var2" # gt lt ge le eq ne
elif test $var -eq $var2;thten
echo "$var1 = $var2"
else
echo "$var1 < $var2"
fi
if test $var1 -gt $var2;then # 整数比较大小【必须是整数】
echo "$var1 > $var2" # gt lt ge le eq ne
elif test $var -eq $var2;thten
echo "$var1 = $var2"
else
echo "$var1 < $var2"
fi
if test $str1 == $str2;then #字符串比较大小
echo "$str1 = $str2" # == != < > test 命令必须用 \ 对> < 进行转义
elfi test $str1 \> $str2;then
echo "$str1 > $str2"
else
echo "$str1 < $str2"
fi
str="shuming" # test -n $str 字符串str 长度> 0 test 返回码是 0
if test -n $str ;then # test -z $str 字符串str 长度 = 0 test 返回码是 0
echo $str
fi
3. if 【】 的命令
(1). 【】 两边必须有空格 ;否则语法错误(2). 【】 跟test命令的工作原理是相同的
(3). 在比较字符串时 test 【】 都需要对 > < 进行转义
if [ -d /home/xxx/file ];then echo /home/xx/file is exists && is dir;fi
-f file #file 存在而且是一个普通文件
-e file #file 存在【什么文件也可以】
-s file $file 存在而且不为空
-r file #file 存在而且是可读
-w file #file 存在并且可以写
-o file #file存在而且属于当前用户
$ if test aaaa.zip -ot bb;then echo aaaa.zip is old than bb;fi # -nt -ot 比较两个文件的创建时间aaaa.zip is old than bb$ ll aaaa.zip bb-rw------- 1 xxx users 2097152 Aug 29 17:53 aaaa.zip-rw-r--r-- 1 xxx users 359 Sep 4 09:44 bb
4. if (());then fi 命令
(()) 针对计算表达式推出的专门的判断格式,在之前的 expr $[] 都需要转移;(()) 这里面是最常见的操作符,需要转义的。
if (( 2**3 -1 * 2 >= 6));then echo OK;fi
5. if【【】】 ,命令
[[ ]] 双中括号是专门为字符串的比较提供的;[[]] 可以提供test [] 不提供的模糊匹配(正则表达式)
if [[ $USER == z* ]];then echo $USER;fi
zengtai.csm
6.case 的命令的格式
#!/bin/bash
case $USER in
shuming|test)
echo "$USER is shuming or test";;
zengtai.csm)
echo "$USER is zengtai.csm";;
shaoye)
echo "$USER is shaoye";;
*)
echo "sorry,$USER is not anyone";;
esac