亲宝软件园·资讯

展开

Bash中test命令的使用

WongKyunban 人气:0

这个命令在if条件句中用得很多。test命令后都会跟一个表达式,作为它的参数。它有两种写法:

test EXPRESSION
[ EXPRESSION ]

test的执行过程就是拿一个元素与另一个元素进行比较。在网络上找了一个很有意思的例子,用它来说明一下test命令的使用:

test 1 -eq 2 && echo "true" || echo "false"

如果比较的结果是true,打印true,否则打印false

我们可以通过$?拿到test的结果。如果表达式的值是false,则$?的值是1,否则就是0。

上面的语句与下同的表达是一样的:

[ 1 -eq 2 ] && echo "true" || echo "false"

整型相关的表达式用到的两个数据的比较方法如下:

#!/usr/bin/env bash

test 1 -eq 2 && echo "true" || echo "false"
test 1 -ne 2 && echo "true" || echo "false"
test 1 -gt 2 && echo "true" || echo "false"
test 1 -ge 2 && echo "true" || echo "false"
test 1 -lt 2 && echo "true" || echo "false"
test 1 -le 2 && echo "true" || echo "false"

[ 1 -eq 2 ] && echo "true" || echo "false"
[ 1 -ne 2 ] && echo "true" || echo "false"
[ 1 -gt 2 ] && echo "true" || echo "false"
[ 1 -ge 2 ] && echo "true" || echo "false"
[ 1 -lt 2 ] && echo "true" || echo "false"
[ 1 -le 2 ] && echo "true" || echo "false"

shell提供了字符串比较相关的表达式:

针对字符串,shell提供了这些方便使用的表达式。比如说:-n <string>这个表达式就是将字符串长度与0作比较。其他依次类推。

test -n string1 && echo "true" || echo "false"
test -z string1 && echo "true" || echo "false"
test string1 && echo "true" || echo "false"
test string1=string2 && echo "true" || echo "false"
test string1!=string2 && echo "true" || echo "false"

[ -n string1 ] && echo "true" || echo "false"
[ -z string1 ] && echo "true" || echo "false"
[ string1 ] && echo "true" || echo "false"
[ string1=string2 ] && echo "true" || echo "false"
[ string1!=string2 ] && echo "true" || echo "false"

shell也提供了与文件相关的比较表达式:

#!/usr/bin/env bash

test -e /bin/bash && echo $? || echo $?
test -f /bin/bash && echo $? || echo $?
test -d /bin/bash && echo $? || echo $?
test -r /bin/bash && echo $? || echo $?
test -w /bin/bash && echo $? || echo $?
test -x /bin/bash && echo $? || echo $?
test -s /bin/bash && echo $? || echo $?
test -S /bin/bash && echo $? || echo $?
test -O /bin/bash && echo $? || echo $?
test -G /bin/bash && echo $? || echo $?
test -h /bin/bash && echo $? || echo $?
test -L /bin/bash && echo $? || echo $?
test -b /bin/bash && echo $? || echo $?
test -c /bin/bash && echo $? || echo $?

#!/usr/bin/env bash

[ -e /bin/bash ] && echo $? || echo $?
[ -f /bin/bash ] && echo $? || echo $?
[ -d /bin/bash ] && echo $? || echo $?
[ -r /bin/bash ] && echo $? || echo $?
[ -w /bin/bash ] && echo $? || echo $?
[ -x /bin/bash ] && echo $? || echo $?
[ -s /bin/bash ] && echo $? || echo $?
[ -S /bin/bash ] && echo $? || echo $?
[ -O /bin/bash ] && echo $? || echo $?
[ -G /bin/bash ] && echo $? || echo $?
[ -h /bin/bash ] && echo $? || echo $?
[ -L /bin/bash ] && echo $? || echo $?
[ -b /bin/bash ] && echo $? || echo $?
[ -c /bin/bash ] && echo $? || echo $?

shell提供了上面这些方便的表达式,我们就少做了很多功夫。

所以,现在看来test很简单,但是很有用。因为shell脚本里会出现很多条件语句,test会用到很多。

加载全部内容

相关教程
猜你喜欢
用户评论