When I was learning shell programming, I was confused by the usage of various brackets. With gradual familiarity and accumulation, I finally mastered the usage of all brackets. Now, I would like to share with you what I have summarized.
Note: The prerequisite for reading this document is that you already have the foundation of bash and shell programming.
Single parentheses ()
But there are two common functions of parentheses: command substitution and array initialization
Command substitution
When the $() structure is encountered, the shell executes the command within the brackets and returns the result
# tmp=$(date) # echo $tmp Fri Sep 18 10:22:30 CST 2020
Initialize array
# 初始化数组 lnmp=(linux nginx mysql php)
Double parentheses (())
Remember that there is a The characteristic is that the words in the brackets must conform to the syntax of the C language, and there is no need to add the $ symbol when using variable names.
Double parentheses are used more often. They can be used for integer calculations (decimals are not supported). For example: $((3 2))
# echo $((1+3)) 4 # n1=3 # echo $((n1+7)) 10
As long as it conforms to the operation expansion of C language grammar, it can be written in the brackets
# echo $((3+4>5 ? 1 :0)) 1 # echo $((3+4>9 ? 1 :0)) 0
Reassign the variable value. At this time, you cannot add $ outside the brackets. Symbol
# i=1;((i++));echo $i; 2 # i=1;((i=100));echo $i; 100
Double brackets are often used in for loops
for ((i=0;i<5;i++));do echo -n $i;done
Single square brackets[]
Single square brackets are the most common It is used in logical judgment. In addition, it can also be used as the subscript of an array, and to express a range in regular expressions.
Used in shell scripts for conditional judgment:
if [ 1 > 2 ] then …… fi
can also be used as an array subscript. :
# echo ${lnmp[1]} nginx
is used in regular expressions to indicate a range
[0-9] 表示数子0-9都行
Double brackets
are the same as single brackets, double brackets Also used in conditional judgments, but it is more general than single square brackets. Here's an example:
[ a > b ] && [ a > 0 ]或[ a > b -a a > 0 ] 改成双括号 [[ a > b && a > 0 ]]
Single curly brace {}
Curly brace expansion. (globbing) will expand the file name enclosed in curly braces. Within curly braces, no whitespace is allowed unless the whitespace is quoted or escaped.
For example, entering the command rm -f {1,2}.txt will delete files 1.txt and 2.txt.
The role of .. in single curly braces
The two dots here represent a range. For example,
echo {1..10} #将打印1,2,3,4,5,6,7,8,9,10
curly braces are also commonly used in shell scripts for code blocks.
In addition to the first time, single curly braces can also be used to replace and delete variable content and test variable content. A common example is given. We often determine whether a variable exists, and if it does not exist, set a new value for the variable.
val=${n1:-test}
The above code indicates that if the variable n1 does not exist or is empty, the val variable value is set to test, otherwise the val value is the value of the n1 variable
The above is the detailed content of Comprehensively sort out the functions and usage of various brackets in the shell under Linux. For more information, please follow other related articles on the PHP Chinese website!