当前位置:网站首页>Basic series of SHEL script (II) syntax + operation + judgment
Basic series of SHEL script (II) syntax + operation + judgment
2022-07-05 07:20:00 【jiankang66】
One 、 background
Although I am a java The programmer , Do the back end , But recently, I often need to read scripts written by others to run projects , So as a back-end programmer , We also need to know shell grammar , Can read some basic shell Script .
Two 、 Introduction to script definition and execution
1、bash The script header defines the executable environment , Define the interpreter , The program specified by the following path is the program that interprets this script file Shell Program .
#!/bin/bash2、 Give script permission
chmod +x a.sh3、 perform bash Script
./a.sh4、 Check execution
bash -x zhishu.shAfter execution , Will be displayed bash The execution of the script , as follows , It is a prime number script execution process .
+ read -p Please enter a number : number
Please enter a number :33
+ '[' 33 -eq 1 ']'
+ '[' 33 -eq 2 ']'
++ seq 2 32
+ for i in '`seq 2 $[$number-1]`'
zhishu.sh: line 12: %2: syntax error: operand expected (error token is "%2")
+ echo 33 Prime number
33 Prime number 5、 Shortcut key
(1) Not insert In mode , Do the following , Copy the current row .
yyp(2) Not insert In mode , Do the following , Delete several lines below the cursor .
10d6、 Escape character ,
(1) Add... To the front \, Example , Defines a variable $0.
echo "\$0 = $0"7、 Execute commands in the script without output
ping -c1 $ip &>/dev/null3、 ... and 、read Command syntax
1、、 Prompt the user to enter
(1) It will show input your name;, The user will assign the input content to name Variable .
read -p "input your name:" name
# Print user input
echo ${$name}(2) User input is hidden ,-p The parameters entered by the user will be hidden , Console not displayed .
read -s -p "input your name:" nameFour 、 arithmetic
1、 common 4 There are two operation modes , Remember that syntax can write complex operations in scripts .
(1) The first one is
$((1+1)) (2) The second kind
$[84*1] (3) The third kind of , Space required
expr 1 + 1 # Note blank space
expr 10 \* 2 #\ For escape characters 4、 let Calculate variables
n=1;let n=n+2;echo $n # The result is 3
ln=1;let n=n**3;;echo $n # The result is 85、 ... and 、 conditional
1、 The first way ,
(1) Be careful : There should be spaces between brackets and calculated fields , Otherwise, an error will be reported
[[ ]](2) Example :
[[ ! -d ./dir ]];echo $? # Determine whether it is a directory , If yes, go back to 02、 The second way ,
(1) There should be spaces between brackets and calculated fields , Otherwise, an error will be reported
[](2) Example
[ -L ./va.sh ];echo $? # Determine whether it is a linked file , In this way, spaces are required in brackets 3、 The third way
(1) Use test command
test(2) Example :
test test -f varable.sh # Determine if it's a document
test -d dir2;echo $? # Determine if it's a directory
test varable.sh -nt a.sh;echo $? # Judge whether the previous file is newer than the following file
test a.sh -ef b.sh ;echo $? # Compare whether the two files are the same
test -z "hello world";echo $? # Determines if the string is empty 1 Not empty
test -n "hello world";echo $? # Determine whether the string is non empty 1 Not empty
test "hello"="word" ;echo $? # Determine whether two strings are equal
test 1 -eq 2;echo $? # Judge 1 and 2 Whether it is equal or not 1 Is not equal 4、 Options for judging numbers
| -eq | be equal to |
| -ne | It's not equal to |
| -gt | Greater than |
| -lt | Less than |
| -ge | Greater than or equal to |
| -le | Less than or equal to |
5、 Determine file options
| -d | Whether it is a directory |
| -f | Is it a document |
| -e | Whether there is |
| -ef | Are the two files equal |
| -w | Whether a file can be written |
| -L | Is there a linked file |
| -s | Determine whether a file is not empty |
| ! -s | Judge whether the file content is empty |
6、 String judgment options
| -z | Determines if the string is empty |
| -n | Determine whether the string is non empty |
7、 Other orders passed man test see , Yes string Comparison , Document judgment, etc
6、 ... and 、 Multi condition judgment
1、 grammar
(1) Logic and
-a perhaps &&(2) Logic or
-o perhaps ||(3) Example
# Determine whether the user is an administrator , Print the following content if the conditions are met
[ $(id -u) -eq 0 ]&& echo “ It's the administrator ” 2、if structure
(1) Grammar 1
if [ condition ];then
command
fi(2) Grammar II
if test condition ;then
command
else
command
fi(3) Grammar 3
if test condition ;then
command
elif test condition ;then
command
else test condition ;then
command
fi3、 The application case
(1) Determine whether the host is ping through
#!/bin/bash
read -p 'ping Which one? ip:' ip
# Execute commands in the script without output
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo Through the
else
echo no
fi(2) Determine whether a process exists , 0 For existence , Use ps command
#grep -v 'grep' The result does not include the current command process
ps -ef|grep clickhouse|grep -v 'grep';echo $?(3) Determine whether a process exists , 0 For existence , Use pgrep command
# Determine if a process exists
pgrep clickhouse &>/dev/null
test $? -eq 0 && echo " At present clickhouse The process exists " || echo " The current process does not exist "(4) Determine whether a user exists
read -p " Please enter a user :" username
id $username &>/dev/null
if test $? -eq 0;then
echo "$username Users exist "
else
echo "$username The user doesn't exist "
fi7、 ... and 、 summary
The above is about shell Grammar variables , operation , Judge all relevant contents , Hopefully that helped , You can refer to it , If you think it's good , Welcome to wechat search java Basic notes , Relevant knowledge will be continuously updated later , Make progress together .
边栏推荐
- 【Node】nvm 版本管理工具
- Mipi interface, DVP interface and CSI interface of camera
- 【软件测试】05 -- 软件测试的原则
- Ros2 - workspace (V)
- Ros2 - install ros2 (III)
- [vscode] recommended plug-ins
- Install deeptools in CONDA mode
- Word import literature -mendeley
- Ros2 - Service Service (IX)
- Don't confuse the use difference between series / and / *
猜你喜欢

IPage can display data normally, but total is always equal to 0
![[idea] efficient plug-in save actions to improve your work efficiency](/img/6e/49037333964865d9900ddf5698f7e6.jpg)
[idea] efficient plug-in save actions to improve your work efficiency

Netease to B, soft outside, hard in

Ros2 - function package (VI)

U-Boot初始化及工作流程分析

And play the little chestnut of dynamic agent

SOC_ SD_ CMD_ FSM

Mipi interface, DVP interface and CSI interface of camera

你心目中的数据分析 Top 1 选 Pandas 还是选 SQL?

【软件测试】06 -- 软件测试的基本流程
随机推荐
Concurrent programming - deadlock troubleshooting and handling
[node] differences among NPM, yarn and pnpm
2022.06.27_ One question per day
Negative number storage and type conversion in programs
Simple operation of running water lamp (keil5)
PostMessage communication
Import CV2, prompt importerror: libcblas so. 3: cannot open shared object file: No such file or directory
Do you choose pandas or SQL for the top 1 of data analysis in your mind?
What does soda ash do?
Now there are HTML files and MVC made with vs (connected to the database). How can they be connected?
【obs】x264编码:“buffer_size“
[tf1] save and load parameters
Tshydro tool
并发编程 — 死锁排查及处理
Lexin interview process
PowerManagerService(一)— 初始化
Ros2 - common command line (IV)
Mathematical analysis_ Notes_ Chapter 8: multiple integral
[OBS] x264 Code: "buffer_size“
基于Cortex-M3、M4的GPIO口位带操作宏定义(可总线输入输出,可用于STM32、ADuCM4050等)