1, Definition of variables
1. What are the variables?
In one sentence: variables are used to temporarily save data, which can be changed.
2. When do I need to define variables?
If a content needs to be used multiple times and appears repeatedly in the code, the content can be represented by variables. In this way, when modifying the content, you only need to modify the value of the variable. In the process of code operation, the execution results of some commands may be saved. If subsequent codes need to use these results, they can directly use this variable.
3. How to define variables?
Variable name = variable value
Variable name: used to temporarily save data
Variable value: temporary variable data
4. Definition rules of variables
Serial number | rule |
---|---|
1 | Case sensitive |
2 | Variable names cannot have special symbols |
3 | Variable names cannot start with numbers |
4 | There must be no spaces on either side of the equal sign |
5 | Try to know the meaning of variable names |
5. What are the definition methods of variables?
1) Basic mode
Assign directly to a variable
[root@MissHou ~]# A=1234567 [root@MissHou ~]# echo $A 1234567 [root@MissHou ~]# echo ${A:2:4} 3456
explain:
The similarities and differences between $variable name and ${variable name} are the same: variables can be called
Differences: ${variable name} can intercept only part of the variable, but $variable name cannot
[root@localhost add]# B=`date +%F` [root@localhost add]# echo $B 2021-08-03 [root@localhost add]# C=$(uname -r) [root@localhost add]# echo $C 3.10.0-1160.el7.x86_64
2, Interactive definition variable (read)
Purpose: let users assign values to variables themselves, which is more flexible.
Syntax: read [options] variable name
Common options:
option | interpretation |
---|---|
-p | Define the information to prompt the user |
-n | Define the number of characters (limit the length of variable values) |
-s | Do not display (do not display user input) |
-t | Define the timeout time, and the default unit is seconds (limit the timeout time of user input variable value) |
Usage 1: user defined variable value
[root@MissHou ~]# read name harry [root@MissHou ~]# echo $name harry [root@MissHou ~]# read -p "Input your name:" name Input your name:tom [root@MissHou ~]# echo $name tom
Usage 2: the variable value comes from the file
[root@MissHou ~]# cat 1.txt 10.1.1.1 255.255.255.0 [root@MissHou ~]# read ip mask < 1.txt [root@MissHou ~]# echo $ip 10.1.1.1 [root@MissHou ~]# echo $mask 255.255.255.0
3, Define variable with type (declare)
Purpose: make some restrictions on variables and fix the type of variables, such as integer and read-only
Usage: declare option variable name = variable value
Common options:
[root@MissHou ~]# declare -i A=123 [root@MissHou ~]# echo $A 123 [root@MissHou ~]# A=hello [root@MissHou ~]# echo $A 0 [root@MissHou ~]# declare -r B=hello [root@MissHou ~]# echo $B hello [root@MissHou ~]# B=world -bash: B: readonly variable [root@MissHou ~]# unset B -bash: unset: B: cannot unset: readonly variable
4, Classification of variables
1. Local variable
Local variable: a variable defined by the current user. The current process is valid. Other processes and child processes of the current process are invalid.
2. Environmental variables
Environment variable: the current process is valid and can be called by child processes.
- env view the environment variables of the current user
- set queries all variables (temporary variables and environment variables) of the current user
- export variable name = variable value or variable name = variable value; export variable name
[root@MissHou ~]# export A=hello Temporarily changes a local variable (temporary variable) into an environment variable [root@MissHou ~]# env|grep ^A A=hello
Permanent: vim /etc/profile
Or ~ / bashrc export A=hello
Or A=hello export A
Note: there is a variable PATH and environment variable in the system
export PATH=/usr/local/mysql/bin:$PATH
3. Global variable
- Global variable: all users and programs in the world can call and inherit, and new users can call by default
- Interpretation of relevant configuration files
Note: after the above files are modified, you need to re source to make them effective or log out and log in again.
The order in which users log in to the system to read relevant files
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- /etc/bashrc
- $HOME/.bash_logout
4. System variable
Built in variable | meaning |
---|---|
$? | The status returned after the execution of the previous command; A status value of 0 indicates normal execution, and a non-0 indicates abnormal execution or error |
$0 | The name of the program or script currently executing |
$# | The number of parameters followed by the script |
$* | All parameters behind the script are output as a whole, and each variable parameter is separated by a space |
$@ | All parameters behind the script are independent and output |
$#1~$9 | For the location parameter after the script, $1 represents the first location parameter, and so on |
${10} ~ ${n} | Expand the location parameter. The 10th location variable must be enclosed in {} braces (expanded with more than 2 digits) |
$$ | The process number of the current process, such as echo$$ |
$! | The last process number running in the background (current terminal) |
!$ | Call the parameters in the last command history |
5, Simple four arithmetic
Arithmetic operations: by default, the shell can only support simple integer operations
Operation contents: addition (+), subtraction (-), multiplication (*), division (/), remainder (%)
1. The four operations are consistent
expression | give an example |
---|---|
$(( )) | echo $((1+1)) |
$[ ] | echo $[10-5] |
expr | expr 10 / 5 |
let | n=1;let n+=1 is equivalent to let n=n+1 |
6, Array
1. Definition of array
- Normal array: only integers can be used as array indexes (subscripts of elements)
- Associative array: you can use strings as array indexes (subscripts of elements)
2. Normal array definition
- One at a time
Array name [index subscript] = value
array[0]=v1
array[1]=v2
array[3]=v3
- Assign multiple values at a time
Array name = (value 1, value 2, value 3...)
array=(var1 var2 var3 var4)
Array1 = (` cat / etc / passwd `) ------------------ assign each line in the file to array1 array
array2=(`ls /root`)
array3=(harry amy jack "Miss Hou")
array4=(1 2 3 4 "hello world" [10]=linux)
3. Array reading
${array name [element subscript]}
echo ${array[0]} ----- get the first element in the array
echo ${array []} ---- get all elements in the array
echo ${#array []} ------ get the number of all elements in the array
echo ${!array [@]} ------- get the index subscript of the array element
echo ${array[@]:1:2} ------ access the specified element; 1 means to obtain from the element with subscript 1; 2 means to get the following elements
View common array information:
[root@MissHou ~]# declare -a
4. Associative array definition
1) First declare the associative array
declare -A asso_array1
declare -A asso_array2
declare -A asso_array3
2) array assignment
- Assign one value at a time
Array name [index or subscript] = variable value
asso_array1 [linux]=one
asso_array1 [java]=two
asso_array1 [php]=three
- Assign multiple values at a time
asso_array2=([name1]=harry [name2]=jack [name3]=amy [name4]="Miss Hou")
- View associative arrays
#declare -A declare -A asso_array1='([php]="three" [java]="two" [linux]="one" )' declare -A asso_array2='([name3]="amy" [name2]="jack" [name1]="harry" [name4]="Miss Hou" )'
- Get associative array value
# echo ${asso_array1[linux]} one # echo ${asso_array1[php]} three # echo ${asso_array1[*]} three two one # echo ${!asso_array1[*]} php java linux # echo ${#asso_array1[*]} 3 # echo ${#asso_array2[*]} 4 # echo ${!asso_array2[*]} name3 name2 name1 name4