An article that understands Shell scripts,
Shell scripts use the Shell command interpretation function to parse a plain text file and then execute these functions. It can also be said that Shell scripts are a collection of commands.
Shell can be directly used on win/Unix/Linux, and can call a large number of internal functions of the system to explain the execution program. If you are familiar with Shell scripts, it makes it easier for us to operate computers, it also saves a lot of time.
What can Shell do in Shell application scenarios?
- Simplify some complex commands (it may take many steps to submit github code at ordinary times, but Shell can be simplified as one step)
- You can write some scripts to automatically replace the latest sdk (Library) in a project)
- Automatic packaging, compilation, and release
- Clear empty disk folders
- In short, you can try all the regular active scripts.
Shell cannot do anything
- When precision operations are required
- High language efficiency
- When some network operations are required
- In short, Shell can quickly develop a script to simplify the development process, and cannot be used to replace advanced languages.
How Shell works
Shell can be called a scripting language because it does not need to be compiled, but is interpreted by the interpreter before being compiled and executed, compared with traditional languages, the process of interpretation is much more efficient than that of traditional directly compiled languages.
The simplest script:
#!/bin/bashecho "Hello World"
You only need to open the text editing tool, edit it as shown above, and save it as test. sh.
Run the script:
1. cd to the directory 2. chmod + x./test. sh # grant the script permission 3 ../test. sh # execute the script
1
In this way, we will write the first simplest script. Below we can try to write some complicated scripts.
Variables in Shell
myText="hello world"muNum=100
Note that there are no spaces before and after "=", and the naming rules are the same as those in other languages.
Access variable
myText="hello world"muNum=100echo $myTextecho muNum
To access a variable, use $. Otherwise, the output is plain text, as shown in.
4 arithmetic example programs in 2 shell
#!/bin/bashecho "Hello World !"a=3b=5val=`expr $a + $b`echo "Total value : $val"val=`expr $a - $b`echo "Total value : $val"val=`expr $a \* $b`echo "Total value : $val"val=`expr $a / $b`echo "Total value : $val"
Note that there is no space before and after "=" when defining a variable, but there must be spaces before and after the operator number during the four arithmetic operations, escape is required for multiplication.
3.png other operators =, =, and ,! = ,! ,-O,-
Example Program
a=3b=5val=`expr $a / $b`echo "Total value : $val"val=`expr $a % $b`echo "Total value : $val"if [ $a == $b ]then echo "a is equal to b"fiif [ $a != $b ]then echo "a is not equal to b"fi
4 Relational operators #! /Bin/sh example Program
a=10b=20if [ $a -eq $b ]then echo "true"else echo "false"fiif [ $a -ne $b ]then echo "true"else echo "false"fiif [ $a -gt $b ]then echo "true"else echo "false"fiif [ $a -lt $b ]then echo "true"else echo "false"fiif [ $a -ge $b ]then echo "true"else echo "false"fiif [ $a -le $b ]then echo "true"else echo "false"fi
5 string Operators
String
#! /Bin/shmtext = "hello" # define the string mtext2 = "world" mtext3 = $ mtext "" $ mtext2 # String concatenation echo $ mtext3 # output string echo $ {# mtext3} # output String Length echo $ {mtext3: 1: 4} # truncate a string
6 Arrays
#! /Bin/sharray = (1 2 3 4 5) # define array array2 = (aa bb cc dd ee) # define an array value =$ {array [3]} # Find the number of a lower mark, then assign echo $ value # print value2 =$ {array2 [3]} # Find the number of a lower mark, then assign echo $ value2 # print length =$ {# array [*]} # obtain the array length echo $ length
7. Output program echo
#! /Bin/shecho "hello world" echo hello world text = "hello world" echo $ textecho-e "hello \ nworld" # output and wrap echo "hello world"> a.txt # redirection echo 'date' to the file # output the current system time
8 printf
Similar to the C language.
Judgment statement
- If
- If-else
- If-elseIf
- Case
#!/bin/sha=10b=20if [ $a == $b ]then echo "true"fiif [ $a == $b ]then echo "true"else echo "false"fiif [ $a == $b ]then echo "a is equal to b"elif [ $a -gt $b ]then echo "a is greater than b"elif [ $a -lt $b ]then echo "a is less than b"else echo "None of the condition met"fi
9test command
Test $ [num1]-eq $ [num2] # determine whether two variables are equal test num1 = num2 # determine whether two numbers are equal
For Loop
#!/bin/shfor i in {1..5}do echo $idonefor i in 5 6 7 8 9do echo $idonefor FILE in $HOME/.bash*do echo $FILEdone
Effect 10while Loop
#! /Bin/shCOUNTER = 0 while [$ COUNTER-lt 5] do COUNTER = 'expr $ COUNTER + 1' echo $ COUNTERdoneecho 'Please input... 'Echo 'ctrl + d to stop the program 'while read FILMdo echo "Yeah! Great film the $ FILM "done
The above are the two usage of the while loop. The first is more conventional. Execute the loop and add the number of controls to 1 each time, so that the while loop can have exit conditions.
The second is that the user outputs the input text from the keyboard.
Skip Loop
Break # Jump out of all cycles break n # Jump out of layer n f loop continue # Jump out of the current loop
Function
#!/bin/shsysout(){ echo "hello world"}sysout
Define a function without return values, and then call the function.
#!/bin/shtest(){ aNum=3 anotherNum=5 return $(($aNum+$anotherNum))}testresult=$?echo $result
Define a function with a returned value, call this function, and output the result
11
#! /Bin/shtest () {echo $1 # receive the first parameter echo $2 # receive the second parameter echo $3 # receive the third parameter echo $ # receive the number of parameters echo $ * # receive all parameters} test aa bb cc
Defines a function for passing Parameters
12 redirection
$ Echo result> file # Write the result to a file. The result is not displayed on the console, but overwrite $ echo result> file # Write the result to the file, the result is not displayed on the console, but in the file, append the echo input <file # To get the input stream.
Write a script that automatically enters the command to automatically submit the script of the github repository.
#!/bin/bashecho "-------Begin-------"git add .git commit -m $1echo $1git push origin masterecho "--------End--------"
13
The above is my summary of shell knowledge. You are welcome to have a dim sum, comments, and discussions ~~
Script program