美文网首页
Shell_06_判断表达式

Shell_06_判断表达式

作者: 热爱_生活 | 来源:发表于2019-12-22 09:41 被阅读0次

test

image

示例:

$ touch a.txt
$ test -e a.txt;echo $?
0                             # 测试成功,命令返回值为 0

$ test -e s.txt;echo $?
1                             # 测试失败,命令返回值为 非 0

$ test -f a.txt;echo $?
0

$ test -d a.txt;echo $?
1


image

示例:

$ test -r a.txt; echo $?
0

$ test -x a.txt; echo $?
1

$ test -w a.txt; echo $?
0

$ test -u a.txt; echo $?     # 判断 a.txt 文件是否具有 SUID 属性
1

$ cat a.txt                        # 查看 a.txt ,此文件内容为空

$ test -s a.txt; echo $?    # 判断 a.txt 文件中有内容
1                                      # 命令返回值为 1 ,说明文件中没有内容

$ echo "123" > a.txt

$ test -s a.txt; echo $?
0


image

示例:

$ touch b.txt

$ ls -l a.txt
-rw-r--r--  1 shark  staff  4 12 17 22:59 a.txt

$ ls -l b.txt
-rw-r--r--  1 shark  staff  0 12 17 23:05 b.txt

$ test a.txt -nt b.txt; echo $?  # 判断 a.txt 是否比 b.txt 新
1                                            # 返回 1, 表示判断表达式不成立

$ test b.txt -nt a.txt; echo $?
0

image
$ test a.txt -ef a-hard.txt; echo $?
0


image

示例:

$ test 10 -eq 20; echo $?
1

$ n1=10

$ n2=20

$ test $n1 -eq $n2; echo $?
1

$ test $n1 -lt $n2; echo $?
0

$ test $n1 -ne  $n2; echo $?
0


image

注意:
这里的 string 可以是实际的字符串,也可以是一个变量
这里说的字符串是否为 0 的意思是 字符串的长度是否为 0

示例

$ test   -z  ''; echo $?      # 空字符串
0

$ test  -z  ' '; echo $?      # 含有一个空格的字符串
1

$ test  !  -z ' '; echo $?   # 判断含有一个空格的字符串,其长度为非 0 的字符串, 空格也算是字符串。
0

$ test -z ${name}; echo $?   # 变量未定义,shell 中认为其长度为 0
0

$ name=shark

$ test -z ${name}; echo $?
1

$ age=''                               # 定义变量,并且赋值为空字符串

$ test  -z  ${age}; echo $?    # shell 中,被赋值为空字符串的变量长度也为 0
0

注意:

再次强调一下, 在 shell 中,以下两种情况,变量的长度均视为 0

  • 1.变量未定义
    1. 变量定义了,但赋值为空字符串,比如 a='' , b=""
[root@kube-master script]# name=shark
[root@kube-master script]# age=shark
[root@kube-master script]# test $name == $age ;echo $?
0
[root@kube-master script]# test $name != $age ;echo $?
1
[root@kube-master script]#


image

示例

image

判断符号 []

[ -z "${HOME}" ] ; echo $?

必须要注意中括号的两端需要有空白字符来分隔喔! 假设我空白键使用“□”符号来表示,那么,在这些地方你都需要有空白键:

image
  • 在中括号 [] 内的每个元素之间都需要用空格来分隔;
  • 在中括号内的变量,最好都以双引号括号起来;

错误示范

# 定义变量
name="shark ops"

# 开始测试值是否相等
[ ${name} == "xiguatian" ]

会报如下错误信息:

bash: [: too many arguments

之前的错误写法 [ ${name} == "xiguatian" ] 的,会变成这样 [ shark ops == "xiguatian" ]

正确写法应该写成这样 [ "${name}" == "xiguatian" ] 的, 会变成这样 [ "shark ops" == "xiguatian" ]

相关文章

  • Shell_06_判断表达式

    test 示例: 示例: 示例: 示例: 注意:这里的 string 可以是实际的字符串,也可以是一个变量这里说的...

  • 条件判断和循环

    if if格式:if 判断表达式:....elif 判断表达式:....else :....if判断使用真值测试,...

  • 2、JS判断结构

    一、if 判断 判断结构 (三大结构之一: 顺序结构、判断结构、)if (表达式) { }if (表达式) { ...

  • flowable入门(三) 工作流 EL 表达式

    1 常用表达式 1.1 条件判断表达式 判断是否相等 判断是否包含 判断大小 判断是否为空 待默认值的取值 其他高...

  • 「Python」断言

    断言用于判断一个表达式,在表达式的结果为False的时候触发异常。 语法 assert 条件判断表达式[, 异常抛...

  • Java03循环结构

    for 循环 执行流程:首先执行表达式1,然后判断表达式2是否成立,如果成立,执行循环体,然后执行表达式3继续判断...

  • 条件判断语句、多重条件判断语句

    条件判断语句 多重条件判断语句 if语句语法三:if(条件表达式){语句...}else if(条件表达式){语句...

  • 正则表达式汇总

    正则表达式判断

  • JS逻辑

    条件判断语句 语法1:if(条件判断语句){语句} if语句在执行时,会先对条件表达式进行求值判断,如果条件表达式...

  • Shell判断表达式

    以下列举的都是常用表达式: 文件判断表达式:-e:文件是否存在-d:目录是否存在 字符串判断表达式:-n $str...

网友评论

      本文标题:Shell_06_判断表达式

      本文链接:https://www.haomeiwen.com/subject/okxonctx.html