当前位置:网站首页>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/bash
2、 Give script permission
chmod +x a.sh
3、 perform bash Script
./a.sh
4、 Check execution
bash -x zhishu.sh
After 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 .
10d
6、 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/null
3、 ... 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:" name
Four 、 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 8
5、 ... 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 0
2、 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
fi
3、 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 "
fi
7、 ... 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 .
边栏推荐
- Batch convert txt to excel format
- And play the little chestnut of dynamic agent
- Unity ugui how to match and transform coordinates between different UI panels or uis
- HDU1232 畅通工程(并查集)
- 【Node】npm、yarn、pnpm 区别
- [OBS] x264 Code: "buffer_size“
- Simple operation of nixie tube (keil5)
- [software testing] 04 -- software testing and software development
- What is sodium hydroxide?
- 611. 有效三角形的个数
猜你喜欢
Machine learning Seaborn visualization
M2dgr slam data set of multi-source and multi scene ground robot
Rough notes of C language (2) -- constants
Tshydro tool
Hdu1231 maximum continuous subsequence (divide and conquer or dynamic gauge or double pointer)
CADD课程学习(6)-- 获得已有的虚拟化合物库(Drugbank、ZINC)
Don't confuse the use difference between series / and / *
HDU1231 最大连续子序列(分治or动规or双指针)
Ros2 - first acquaintance with ros2 (I)
Concurrent programming - how to interrupt / stop a running thread?
随机推荐
Use of Pai platform
Ugnx12.0 initialization crash, initialization error (-15)
And let's play dynamic proxy (extreme depth version)
golang定时器使用踩的坑:定时器每天执行一次
Delayqueue usage and scenarios of delay queue
并查集理论讲解和代码实现
Matlab在线性代数中的应用(四):相似矩阵及二次型
基于Cortex-M3、M4的GPIO口位带操作宏定义(可总线输入输出,可用于STM32、ADuCM4050等)
Simple operation with independent keys (hey, a little fancy) (keil5)
NPM and package common commands
list. files: List the Files in a Directory/Folder
2022 PMP project management examination agile knowledge points (7)
Logical structure and physical structure
你心目中的数据分析 Top 1 选 Pandas 还是选 SQL?
2022.06.27_每日一题
Netease to B, soft outside, hard in
Executealways of unity is replacing executeineditmode
(tool use) how to make the system automatically match and associate to database fields by importing MySQL from idea and writing SQL statements
Chapter 2: try to implement a simple bean container
Import CV2 prompt importerror: libgl so. 1: Cannot open shared object file: no such file or directory