shell programming----Test

Test constructs

           An if/then construct tests whether the exit status is 0, if so then execute more command!

          dedicated command: [ ]    This command considers its arguments as comparisonexpressions or file tests and      returns an exit status correspondingto the result of the comparison;

          extended test command; [[      ]]  which performs comparisons in a manner more familiar to programmers;

         The (( ... )) and let ... constructs: return exit status which according to whether the arithmetic expressions they evaluate expand to a non-zero value.


          The key of this is the[exit status] like execute a command!

 

File Test Operator

   -e  -a

        check file exist; but -a has been deprecated;

   -f 

        check file is a regular file;  

   -s

         File is not zero size;

   -d 

         File is a directory

  -b  

         File is  a block device

  -c  

         File is a character device

  -p  

         File is a pipe

  -h

         File is a symbol link

  -S 

         File is socket file

 

-t         File (descriptor) is associated with a terminal device -r

File has read permission (for the user running the test)

-w
File has  write permission(for the user running the test)
-x  
File has execute permission(for the user running the test)
-g
set the group-id flag on the file or directory
-u
set the user-id flag on the file or directory
-O
Are you the owner of the file
-G
Groups id is same with yours
-N
File modified since it last read?
file1 -nt file2
File1 is newer than the file2
file -ot  file2
File1 is old than the file2
file1 -ef file2
file1 and file2 are the hard links to the same file ?
!

reverse the above test result



integer comparison

-eq

is equal to

if [ "$a" -eq "$b" ]

-ne

is not equal to

if [ "$a" -ne "$b" ]

-gt

is greater than

if [ "$a" -gt "$b" ]

-ge

is greater than or equal to

if [ "$a" -ge "$b" ]

-lt

is less than

if [ "$a" -lt "$b" ]

-le

is less than or equal to

if [ "$a" -le "$b" ]

<

is less than (within double parentheses)

(("$a" < "$b"))

<=

is less than or equal to (within double parentheses)

(("$a" <= "$b"))

>

is greater than (within double parentheses)

(("$a" > "$b"))

>=

is greater than or equal to (within double parentheses)

(("$a" >= "$b"))

string comparison

=

is equal to

if [ "$a" = "$b" ]

Caution

Note the whitespace framing the =.

if [ "$a"="$b" ] is not equivalent to the above.

==

is equal to

if [ "$a" == "$b" ]

This is a synonym for =.

Note

The == comparison operator behaves differently within a double-brackets test than within single brackets.

[[ $a == z* ]]   # True if $a starts with an "z" (pattern matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).

[ $a == z* ]     # File globbing and word splitting take place.
[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).

# Thanks, Stéphane Chazelas
!=

is not equal to

if [ "$a" != "$b" ]

This operator uses pattern matching within a [[ ... ]] construct.

<

is less than, in ASCII alphabetical order

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

Note that the "<" needs to be escaped within a [ ] construct.

>

is greater than, in ASCII alphabetical order

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

Note that the ">" needs to be escaped within a [ ] construct.

See Example 27-11 for an application of this comparison operator.

-z

string is null, that is, has zero length

 String=''   # Zero-length ("null") string variable.

if [ -z "$String" ]
then
  echo "\$String is null."
else
  echo "\$String is NOT null."
fi     # $String is null.
-n

string is not null.


compound comparison
-a

logical and

exp1 -a exp2 returns true ifboth exp1 and exp2 are true.

-o

logical or

exp1 -o exp2 returnstrue if either exp1 or exp2 istrue.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值