Shell Basic Operators
Original: http://blog.csdn.net/sinat_36053757/article/details/70319481
The Shell, like other programming languages, supports a variety of operators, including:
- Arithmetic operators
- Relational operators
- Boolean operator
- String operators
- File Test Operators
Native bash does not support simple math operations, but can be implemented with other commands, such as awk and expr,expr, which are most commonly used.
Expr is an expression evaluation tool that uses it to perform evaluation operations on expressions.
For example, two numbers are added (note the use of anti-quotes ' instead of single quotes '):
#!/bin/bashval=`expr 2 + 2`echo "两数之和为 : $val"
执行脚本,输出结果如下所示:两数之和为 : 4
Two points Note:
- There are spaces between the expression and the operator, such as the 2 + 2, which is different from most of the programming languages we are familiar with.
- The complete expression must be two ' inclusive, note that this character is not a common single quote, below the ESC key.
Arithmetic Operators
The following table lists the commonly used arithmetic operators, assuming that variable A is 10 and variable B is 20:
| operator |
Description |
Example |
| + |
Addition |
expr $a + $bThe result is 30. |
| - |
Subtraction |
expr $a - $bThe result is-10. |
| * |
Multiplication |
expr $a \* $bThe result is 200. |
| / |
Division |
expr $b / $aThe result is 2. |
| % |
Take surplus |
expr $b % $aThe result is 0. |
| = |
Assign value |
A= $b assigns the value of variable B to a. |
| == |
Equal. |
Used to compare two numbers, the same returns true. [ a= =b] returns false. |
| != |
Not equal. |
Used to compare two numbers, and returns true if they are different. [ a! =b] returns true. |
注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
Relational operators
Relational operators only support numbers, and strings are not supported unless the value of the string is a number.
The following table lists the commonly used relational operators, assuming that variable A is 10 and variable B is 20:
| operator |
Description |
Example |
| -eq |
Detects whether two numbers are equal and returns true for equality. |
[ $a -eq $b ]returns FALSE. |
| -ne |
Detects whether two numbers are equal and returns true if they are not equal. |
[ $a -ne $b ]Returns True. |
| -gt |
Detects if the number on the left is greater than the right and, if so, returns True. |
[ $a -gt $b ]returns FALSE. |
| -lt |
Detects if the number on the left is less than the right and, if so, returns True. |
[ $a -lt $b ]Returns True. |
| -ge |
Detects if the number on the left is greater than or equal to the right, and returns true if it is. |
[ $a -ge $b ]returns FALSE. |
| -le |
Detects if the left number is less than or equal to the right, and returns true if it is. |
[ $a -le $b ]Returns True. |
Boolean operator
The following table lists the commonly used Boolean operators, assuming that variable A is 10 and variable B is 20:
| operator |
Description |
Example |
| ! |
Non-operation, the expression is true returns False, otherwise true. |
[! false] returns TRUE. |
| -O |
Or operation, there is an expression of true to return true. |
[ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
| -A |
With an operation, two expressions are true to return true. |
[ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
logical Operators
The following is a description of the Shell's logical operators, assuming that variable A is 10 and variable B is 20:
运算符 说明 举例&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
string Operators
The following table lists the commonly used string operators, assuming that variable a is "ABC" and Variable B is "EFG":
| operator |
Description |
Example |
| = |
Detects whether two strings are equal and returns true for equality. |
[ $a = $b ] returns FALSE. |
| != |
Detects whether two strings are equal and returns true if they are not equal. |
[ $a != $b ] returns TRUE. |
| -Z |
Detects whether the string length is 0 and returns true for 0. |
[-Z $a] returns false. |
| -N |
Detects whether the string length is 0 and does not return true for 0. |
[-N $a] returns true. |
| Str |
Detects whether the string is empty and does not return true for null. |
[$a] returns TRUE. |
File Test Operators
File test operators are used to detect various properties of Unix files.
Attribute detection is described as follows:
| operator |
Description |
Example |
| -B File |
Detects if the file is a block device file, and returns True if it is. |
[-B $file] returns FALSE. |
| -C file |
Detects if the file is a character device file, and returns True if it is. |
[-C $file] returns false. |
| -D File |
Detects if the file is a directory, and returns True if it is. |
[-D $file] returns false. |
| -F File |
Detects if the file is a normal file (neither a directory nor a device file), and returns True if it is. |
[-F $file] returns TRUE. |
| -G file |
Detects if the file has a SGID bit set, and returns True if it is. |
[-G $file] returns false. |
| -K File |
Detects if the file has a sticky bit set (Sticky bit), and returns True if it is. |
[-K $file] returns false. |
| -P File |
Detects if the file is a well-known pipe, and returns True if it is. |
[-P $file] returns false. |
| -U file |
Detects if the file has a SUID bit set, and returns True if it is. |
[-U $file] returns false. |
| -R File |
Detects if the file is readable and returns true if it is. |
[-R $file] returns TRUE. |
| -W File |
Detects if the file is writable and returns true if it is. |
[-W $file] returns TRUE. |
| -X File |
Detects if the file can be executed and, if so, returns True. |
[-X $file] returns TRUE. |
| -S file |
Detects whether the file is empty (the file size is greater than 0) and does not return true for null. |
[-S $file] returns TRUE. |
| -E File |
Detects whether the file (including the directory) exists and, if so, returns True. |
[-e $file] returns TRUE. |
Go shell--Basic Operators