linux脚本if eq 0,Shell常用的逻辑判断 -lt -eq 等使用及举例说明

1 #!/bin/sh 2

myPath="/var/log/httpd/"3 myFile="/var /log/httpd/access.log"4 5 #这里的-x

参数判断$myPath是否存在并且是否具有可执行权限6

if [ ! -x "$myPath"]; then 7mkdir "$myPath"8

fi 9 10 #这里的-d

参数判断$myPath是否存在11 if [

! -d "$myPath"]; then 12   mkdir "$myPath"13

fi 14 15 #这里的-f参数判断$myFile是否存在16

if [ ! -f "$myFile" ]; then 17   touch "$myFile"18

fi 19 20 #其他参数还有-n,-n是判断一个变量是否是否有值21

if [ ! -n "$myVar"

]; then 22   echo "$myVar

is empty"23   exit

0 24 fi 25 26

#两个变量判断是否相等,在[]中,=号只能对字符起作用27 if [

"$var1"

= "$var2"

]; then 28   echo "$var1 eq

$var2"29 else 30   echo "$var1

not eq $var2"31 fi

shell 编程中经常使用的if语句内判断参数

–b 当file存在并且是块文件时返回真

-c 当file存在并且是字符文件时返回真

-d 当pathname存在并且是一个目录时返回真

-e 当pathname指定的文件或目录存在时返回真

-f 当file存在并且是正规文件时返回真

-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

-p 当file存在并且是命令管道时返回为真

-r 当由pathname指定的文件或目录存在并且可读时返回为真

-s 当file存在文件大小大于0时返回真

-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。

-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

UNIX Shell

里面比较字符写法:

a4c26d1e5885305701be709a3d33442f.png

-------------------------------------------------------------------------

更为详细的说明:

运算符 描述 示例

文件比较运算符

-e

filename 如果 filename

存在,则为真 [ -e /var/log/syslog ]

-d

filename 如果 filename

为目录,则为真 [ -d /tmp/mydir ]

-f

filename 如果 filename

为常规文件,则为真 [ -f /usr/bin/grep ]

-L

filename 如果 filename

为符号链接,则为真 [ -L /usr/bin/grep ]

-r

filename 如果 filename

可读,则为真 [ -r /var/log/syslog ]

-w

filename 如果 filename

可写,则为真 [ -w /var/mytmp.txt ]

-x

filename 如果 filename

可执行,则为真 [ -L /usr/bin/grep ]

filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [

/tmp/install/etc/services -nt /etc/services ]

filename1 -ot filename2 如果

filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot

arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z

string 如果 string

长度为零,则为真 [ -z $myvar ]

-n

string 如果 string

长度非零,则为真 [ -n $myvar ]

string1 =

string2 如果 string1 与 string2

相同,则为真 [ $myvar = one two three ]

string1 !=

string2 如果 string1 与 string2

不同,则为真 [ $myvar != one two three ]

算术比较运算符

num1 -eq

num2 等于 [ 3 -eq $mynum ]

num1 -ne

num2 不等于 [ 3 -ne $mynum ]

num1 -lt

num2 小于 [ 3 -lt $mynum ]

num1 -le

num2 小于或等于 [ 3 -le $mynum ]

num1 -gt

num2 大于 [ 3 -gt $mynum ]

num1 -ge

num2 大于或等于 [ 3 -ge

$mynum ]

$# 位置参数的数量。

$* 所有位置参数的内容。

$? 命令执行后返回的状态。

$$ 当前进程的进程号。

$! 后台运行的最后一个进程号。

$0 当前执行的进程名。

其中,$?用于检查上一个命令执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值