当前位置:网站首页>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 .
边栏推荐
- golang定时器使用踩的坑:定时器每天执行一次
- Inftnews | drink tea and send virtual stocks? Analysis of Naixue's tea "coin issuance"
- Ros2 - node (VII)
- [untitled]
- [framework] multi learner
- Qu'est - ce que l'hydroxyde de sodium?
- PHY drive commissioning --- mdio/mdc interface Clause 22 and 45 (I)
- Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
- Brief description of inux camera (Mipi interface)
- R language learning notes 1
猜你喜欢
Ros2 - install ros2 (III)
Machine learning Seaborn visualization
并发编程 — 如何中断/停止一个运行中的线程?
1290_FreeRTOS中prvTaskIsTaskSuspended()接口实现分析
Mipi interface, DVP interface and CSI interface of camera
SD_ CMD_ RECEIVE_ SHIFT_ REGISTER
Matrix and TMB package version issues in R
Don't confuse the use difference between series / and / *
Hdu1231 maximum continuous subsequence (divide and conquer or dynamic gauge or double pointer)
Rough notes of C language (2) -- constants
随机推荐
Ros2 - Service Service (IX)
Database SQL practice 4. Find the last of employees in all assigned departments_ Name and first_ name
PHY drive commissioning - phy controller drive (II)
2022.06.27_每日一题
[idea] efficient plug-in save actions to improve your work efficiency
golang定时器使用踩的坑:定时器每天执行一次
苏打粉是什么?
Matlab在线性代数中的应用(四):相似矩阵及二次型
Today, share the wonderful and beautiful theme of idea + website address
Import CV2 prompt importerror: libgl so. 1: Cannot open shared object file: no such file or directory
[software testing] 04 -- software testing and software development
R language learning notes 1
Delayqueue usage and scenarios of delay queue
[software testing] 02 -- software defect management
npm install -g/--save/--save-dev的区别
ORACLE CREATE SEQUENCE,ALTER SEQUENCE,DROP SEQUENCE
C learning notes
Ggplot2 drawing learning notes in R
Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
【无标题】