shell腳本(2)-shell腳本語法

一、如何抒寫shell腳本

1、shell腳本的命名

名字要有意義,不要以a、b、c、1、2、3這種方式命令,建議以sh結尾,在30個位元組內,例如:check_memory.sh

 2、shell腳本的格式

shell腳本開頭必須指定運行環境以#!這個特殊組合來組成,如:#!/bin/bash指該腳本運行解析由/bin/bash來完成

shell的注釋使用#號(執行腳本的注釋最好使用英文)(#!是特例)

#Author:Mr White
#Created Time:2021/07/17 00:50
#Srcipt Description:nginx install script

 

二、shell腳本運行方法

1、腳本運行需要執行許可權,賦予執行許可權後,該腳本可以運行

chmod u+x filename

2、不希望賦予腳本執行許可權,那麼可以使用base命令來運行未給予執行許可權的腳本

base filename

 

三、shell中的特殊符號

不要和正則表達式中的符號含義搞混淆了。

~:家目錄 #cd ~代表進入家目錄

! :執行歷史記錄   !!執行上一條命令

$:變數中取內容符

+  -  * / %  :加減乘除余

&:後台執行

*:通配符,匹配所有

?:通配符,匹配一個字元

;:一行執行多個命令,用分號分隔

|:管道符,上一個命令的輸出作為下一個命令的輸入

\:轉義字元

``:反引號,命令中執行命令

' ':單引號,腳本中字元串用單引號引起來,不同與雙引號是的,單引號不解釋變數(兩個單引號可以)

" ":雙引號,腳本中出現的字元串可以用雙引號引起來

 

四、管道

| :管理符在shell中使用最多,很多組合命令都需要通過管道來完成輸出,管理符其實就是下一個命令對上一個命令的輸出做處理

[root@localhost ~]# cat /etc/passwd | grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

 

五、重定向

1、重定向輸出:覆蓋原數據

[root@localhost test20210718]# echo haha > ./test.txt
[root@localhost test20210718]# cat test.txt
haha
[root@localhost test20210718]# echo hehe > ./test.txt
[root@localhost test20210718]# cat test.txt
hehe

2、重定向追加輸出:在原數據的末尾添加

[root@localhost test20210718]# echo zhuijia1 >> test.txt
[root@localhost test20210718]# echo zhuijia2 >> test.txt
[root@localhost test20210718]# echo zhuijia3 >> test.txt
[root@localhost test20210718]# cat test.txt 
hehe
zhuijia1
zhuijia2
zhuijia3

3、重定向輸入:

[root@localhost test20210718]# wc < test.txt #返回 行 單詞 位元組
 4  4 32

4、重定向追加輸入:

[root@localhost test20210718]# wc << EOF
> hello world!!
> EOF
 1  2 14

 

六、shell腳本中的數學運算

1、expr命令:只能做整數運算,格式比較古板,注意空格

[root@localhost test20210718]# expr 2 + 3
5
[root@localhost test20210718]# expr 2 - 3
-1
[root@localhost test20210718]# expr 2 \* 3
6
[root@localhost test20210718]# expr 2 / 3
0
[root@localhost test20210718]# expr 2 % 3
2

2、使用bc計算器處理浮點運算,scale=2代表小數點保留兩位

[root@localhost test20210718]# free -mh
              total        used        free      shared  buff/cache   available
Mem:           972M        176M        435M        7.7M        360M        647M
Swap:          2.0G          0B        2.0G
[root@localhost test20210718]# expr 435 / 972
0
[root@localhost test20210718]# echo "`echo  "scale=2;435*100/972" | bc`%"
44.75%

3、使用let對整數做運算,需要賦值變數

[root@localhost test20210718]# let a=5+1
[root@localhost test20210718]# echo $a
6

4、(())運算符,處理整形

[root@localhost test20210718]# echo $((1+2))
3

 

七、腳本退出

exit NUM退出腳本,釋放系統資源,NUM代表一個整數,代表返回值

Tags: