当前位置:网站首页>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 .
边栏推荐
- Unity UGUI不同的UI面板或者UI之间如何进行坐标匹配和变换
- Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
- Unconventional ending disconnected from the target VM, address: '127.0.0.1:62635', transport: 'socket‘
- Steps and FAQs of connecting windows Navicat to Alibaba cloud server MySQL
- The problem of configuring opencv in qt5.13.2 is solved in detail
- Machine learning Seaborn visualization
- 2022.06.27_ One question per day
- Batch convert txt to excel format
- How can Oracle SQL statements modify fields that are not allowed to be null to allow nulls?
- PHY drive commissioning --- mdio/mdc interface Clause 22 and 45 (I)
猜你喜欢
随机推荐
[software testing] 04 -- software testing and software development
[vscode] search using regular expressions
[idea] efficient plug-in save actions to improve your work efficiency
npm install -g/--save/--save-dev的区别
Rough notes of C language (2) -- constants
(tool use) how to make the system automatically match and associate to database fields by importing MySQL from idea and writing SQL statements
R language learning notes 1
And play the little chestnut of dynamic agent
Executealways of unity is replacing executeineditmode
【软件测试】06 -- 软件测试的基本流程
Target detection series - detailed explanation of the principle of fast r-cnn
Tshydro tool
剑指 Offer 56 数组中数字出现的次数(异或)
golang定时器使用踩的坑:定时器每天执行一次
Three body goal management notes
Xiaomi written test real question 1
MySQL setting trigger problem
SD_ CMD_ RECEIVE_ SHIFT_ REGISTER
The problem of configuring opencv in qt5.13.2 is solved in detail
Pytorch has been installed in anaconda, and pycharm normally runs code, but vs code displays no module named 'torch‘