Shell判断

Tim Huang 发表于 2014-05-18 浏览数 116

shell中逻辑判断与表达式,可以用来判断文件的存在性,属性。条件表达式在条件判断时候很有用。

if [ $a = 1 ];then
    echo "a is 1"
else
    echo "a is not 1"
fi

注意:

中括号与判断条件之间必须使用空格隔开。

if [[ ! -z "$a" && $a = 1 ]];then
    echo "a is 1"
else
    echo "a is not 1"
fi

多个判断条件采用两个中括号括起来。

逻辑卷标 表示意思
1.关于档案与目录的侦测逻辑卷标!
-f 常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d 常用!侦测『目录』是否存在
-b 侦测是否为一个『 block 档案』
-c 侦测是否为一个『 character 档案』
-S 侦测是否为一个『 socket 标签档案』
-L 侦测是否为一个『 symbolic link 的档案』
-e 侦测『某个东西』是否存在!
2.关于程序的逻辑卷标!
-G 侦测是否由 GID 所执行的程序所拥有
-O 侦测是否由 UID 所执行的程序所拥有
-p 侦测是否为程序间传送信息的 name pipe 或是 FIFO
3.关于档案的属性侦测!
-r 侦测是否为可读的属性
-w 侦测是否为可以写入的属性
-x 侦测是否为可执行的属性
-s 侦测是否为『非空白档案』
-u 侦测是否具有『 SUID 』的属性
-g 侦测是否具有『 SGID 』的属性
-k 侦测是否具有『 sticky bit 』的属性
4.两个档案之间的判断与比较 ;例如『 test file1 -nt file2 』
-nt 第一个档案比第二个档案新
-ot 第一个档案比第二个档案旧
-ef 第一个档案与第二个档案为同一个档案 link之类的档案
5.逻辑的『和(and)』『或(or)』
&& 逻辑的 AND 的意思
ll 逻辑的 OR 的意思
比较有趣的应该算是 1, 3 这两种种类的判断,尤其是在建立一些 permission 相关的档案时,这个就更重要了!然后那个『两个档案之间的判断』也是挺有意思的!有空的话不妨去试一试去!还有,那个 && 及 || 这两个东西也是很重要的!接着下来,我们要来谈一谈运算符号啰!

#!/bin/sh 
myPath="/var/log/httpd/" 
myFile="/var/log/httpd/access.log" 
#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 
if [ ! -x "$myPath" ]; then 
    mkdir "$myPath" 
fi 
#这里的-d 参数判断$myPath是否存在 
if [ ! -d "$myPath" ]; then 
    mkdir "$myPath" 
fi 
#这里的-f参数判断$myFile是否存在 
if [ ! -f "$myFile" ]; then 
    touch "$myFile" 
fi 
#其他参数还有-n,-n是判断一个变量是否是否有值 
if [ ! -n "$myVar" ]; then 
    echo "$myVar is empty" 
    exit 0 
fi 
#两个变量判断是否相等 
if [ "$var1" = "$var2" ]; then 
    echo '$var1 eq $var2' 
else 
    echo '$var1 not eq $var2' 
fi


运算符号 代表意义
= 等于
!= 不等于
< 小于
> 大于
-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-le 小于或等于
-ge 大于或等于
-a 双方都成立(and)
-o 单方成立(or)
-z 空字符串
-n 非空字符串

发表在 | 标签为 | 留下评论

Shell判断有 0 条评论

发表评论

*

* Reload Image

*

分类