Bash: Double Equals Vs -eq
Answer :
== is a bash-specific alias for =, which performs a string (lexical) comparison instead of the -eq numeric comparison. (It's backwards from Perl: the word-style operators are numeric, the symbolic ones lexical.)
To elaborate on bollovan's answer...
There is no >= or <= comparison operator for strings. But you could use them with the ((...)) arithmetic command to compare integers.
You can also use the other string comparison operators (==, !=, <, >, but not =) to compare integers if you use them inside ((...)).
Examples
- Both
[[ 01 -eq 1 ]]and(( 01 == 1 ))do integer comparisons. Both are true. - Both
[[ 01 == 1 ]]and[ 01 = 1 ]do string comparisons. Both are false. - Both
(( 01 -eq 1 ))and(( 01 = 1 ))will return an error.
Note: The double bracket syntax [[...]] and the double parentheses syntax ((...)) are not supported by all shells.
If you want to do integer comparison you will better use (( )), where you can also use >= etc.
Example:
if (( $UID == 0 )); then echo "You are root" else echo "You are not root" fi
Comments
Post a Comment