The method to compare the two strings is as follows:
If ["$ test" x = "test" X]; then
The key points here are:
1. Use a single equal sign
2 Note that there is a space on both sides of the equal sign: This is a UNIX shell requirement.
3. Note that the last X of "$ test" X is specially arranged, because when $ test is null, the above expression becomes x = testx, obviously, they are not equal. Without this X, the expression returns the error [: =: unary operator expected
Binary comparison operator, which compares variables or numbers. Note the difference between numbers and strings.
Integer comparison
-EQ equals to, for example, if ["$ A"-EQ "$ B"]
-Ne is not equal to, for example, if ["$ A"-ne "$ B"]
-GT is greater than, for example, if ["$ A"-GT "$ B"]
-Ge is greater than or equal to, for example, if ["$ A"-ge "$ B"]
-Lt is less than, for example, if ["$ A"-lt "$ B"]
-Le is less than or equal to, for example, if ["$ A"-Le "$ B"]
Greater than (double parentheses required), such as: ("$ A"> "$ B "))
> = Equal to or greater than (double parentheses required), for example: ("$ A"> = "$ B "))
Awk can be used for small data comparison
String comparison
= Equals, for example, if ["$ A" = "$ B"]
= Equal to, such as: If ["$ A" = "$ B"], equivalent to =
Note: The = function has different behaviors in [[] and [], as shown below:
1 [[$ A = z *] # True if $ A starts with "Z" (pattern matching)
2 [[$ A = "z *"] # If $ A is equal to z * (character matching), the result is true.
3
4 [$ A = z *] # file globbing and word splitting will occur
5 ["$ A" = "z *"] # If $ A is equal to z * (character matching), the result is true.
For a bit of explanation, file globbing is a stenographer of files, for example, "*. c" is, and then ~ Yes.
But file globbing is not a strict regular expression, although the structure is similar in most cases.
! = Not equal to, such as: If ["$ "! = "$ B"]
This operator uses pattern matching in the [[] structure.
Greater than, in the ASCII alphabetic order. For example:
If [["$ A"> "$ B"]
If ["$ A" \> "$ B"]
Note: ">" needs to be escaped in the [] structure.
For more information, see Example 26-11.
-Z string is "null". The length is 0.
-N string is not "null"
Note:
To use-N in the [] structure, you must use "" To cause variables. Use a string that is not! -Z
Or the strings that are not referenced by "" are put in the [] structure. In general
Work, but this is not safe. It is a good habit to use "" To test strings.