开发者

How to compare in shell script?

开发者 https://www.devze.com 2023-02-17 07:03 出处:网络
How to compare in shell script? Or, why the following scr开发者_Go百科ipt prints nothing? x=1 if[ $x = 1 ] then echo \"ok\" else echo \"no\" fi

How to compare in shell script?

Or, why the following scr开发者_Go百科ipt prints nothing?

x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi


With numbers, use -eq, -ne, ... for equals, not equals, ...

x=1
if [ $x -eq 1 ]
then 
  echo "ok" 
else 
  echo "no" 
fi

And for others, use == not =.


Short solution with shortcut AND and OR:

x=1
(( $x == 1 )) && echo "ok" || echo "no"


You could compare in shell in two methods

  1. Single-bracket syntax ( if [ ] )
  2. Double-parenthesis syntax ( if (( )))

Using Single-bracket syntax

Operators :-

-eq is equal to

-ne is not equal to

-gt is greater than

-ge is greater than or equal to

-lt is less than

-le is less than or equal to

In Your case :-

x=1
if [ $x -eq 1 ]
then 
  echo "ok" 
else 
  echo "no" 
fi

Double-parenthesis syntax

Double-parentheses construct is also a mechanism for allowing C-style manipulation of variables in Bash, for example, (( var++ )).

In your case :-

x=1
if (( $x == 1 )) # C like statements 
then
    echo "ok"
else
    echo "no"
fi


It depends on the language. With bash, you can use == operator. Otherwize you may use -eq -lt -gt for equals, lowerthan, greaterthan.

$ x=1
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi
no

Edit: added spaces arround == and tested with 2.

0

精彩评论

暂无评论...
验证码 换一张
取 消