当前位置:网站首页>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 .

原网站

版权声明
本文为[jiankang66]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140557516099.html