Shell程式設計規範與變數

2021-10-10 05:17:31 字數 4372 閱讀 8873

shell的作用

編寫第乙個shell指令碼

重定向與管道操作

shell變數的作用、型別

自定義變數

特殊的shell變數

shell指令碼就是將要執行的命令按順序儲存到乙個文字檔案,並給該檔案可執行許可權,方便一次性執行的乙個程式檔案。主要是方便管理員進行設定或管理,可結合各種shell控制語句以完成更複雜的操作。常用於重複性操作、批量事務處理、自動化運維、服務執行狀態監控、定時任務執行等。

1、將要執行的命令按順序儲存到乙個文字檔案

2、給該檔案可執行許可權

3、可結合各種shell控制語句以完成更複雜的操作

1、重複性操作

2、互動性任務

3、批量事務處理

4、服務執行狀態監控

5、定時任務執行

6、…shell的作用——命令直譯器,「翻譯官」

介於系統核心與使用者之間,負責解釋命令列。

使用者的登入shell

1、登入後預設使用的shell程式,一般為/bin/bash

2、不同shell的內部指令、執行環境等會有所區別

編寫指令碼**

1、使用vim文字編輯器

2、每行一條linux命令,按執行順序依次編寫

賦予可執行許可權

使指令碼具有可執行屬性

執行指令碼檔案

執行方式:

方式一:sh 指令碼檔案路徑(不需要執行許可權也可以操作)

方式二: ./ 指令碼檔案路徑(需要執行許可權來操作)

方式三:source 指令碼檔案路徑(不需要執行許可權也可以操作,立馬工作讓環境生效)

更完善的指令碼構成

1、指令碼宣告

2、注釋資訊

3、可執行語句

1、新建乙個shell指令碼

vi first.sh

2、編寫這個指令碼(有3條命令)

#!

/bin/bash

#this is my first shell script

cd /boot

echo "當前的目錄位於:"

pwdecho "其中以vml開頭的檔案包括:"

ls -lh vml*

3、新增可執行許可權

chomd +x first.sh

4、執行該指令碼檔案

./ first.sh

當前的目錄位於:

/boot

其中以vml開頭的檔案包括:

-rwxr-xr-x.

1 root root 5.7m 11月 318:

53 vmlinuz-

0-rescue-ed9bb9b50dcd49b8b4940d790feff2a0

-rwxr-xr-x.

1 root root 5.7m 8月 23

2017 vmlinuz-

3.10.0-

693.el7.x86_6

互動式硬體裝置1、標準輸入:從該裝置接收使用者輸入的資料

2、標準輸出:通過ip該裝置向使用者輸出資料

3、標準錯誤:通過該裝置報告執行出錯資訊

重定向操作

管道操作符號「|」

將左側的命令輸出結果,作為右側命令的處理物件

栗子1(管道符):

從「/etc/passwd」下找到以「/bin/bash」結尾的 | 輸出以「:」為分隔符,第一行,第七行的

[root@root ~

]#grep "/bin/bash$"

/etc/passwd | awk -f:

''root /bin/bash

amandabackup /bin/bash

npl /bin/bash

栗子2(重定向):

[root@root ~

]# useradd xiaoming ##新建乙個使用者xiaoming

[root@root ~

]# vi pass.txt (輸入:123456)##建乙個「123456」的文字

[root@root ~

]# passwd --stdin xiaoming < pass.txt ##結合passwd命令,用「--stdin」選項來識別文字,使得使用者xiaoming,自動有了密碼:123456

變數的作用1、用來存放系統和使用者需要使用的特定引數(值)

2、變數名:使用固定的名稱,由系統預設或使用者定義

3、變數值:能夠根據使用者設定、系統環境的變化而變化

變數的型別

1、自定義變數:由使用者自己定義、修改和使用

2、特殊變數:環境變數,唯讀變數,位置變數,預定義變數

定義乙個新的變數

變數名以字母或下劃線開頭,區分大小寫,建議全大寫

變數名=變數值

檢視變數的值

echo $變數名

舉個栗子:

[root@root ~

]# product=weixin

[root@root ~

]# version=

8.0[root@root ~

]# echo $product $version

weixin 8.0

賦值時使用引號1、雙引號:允許通過 $ 符號引用其他變數值

2、單引號:禁止引用其他變數值,$ 視為普通字元

3、反撇號:命令替換,提取命令執行後的輸出結果

從鍵盤輸入內容為變數賦值

read [-p 「提示資訊」] 變數名

舉個栗子:

[root@root ~

]# read -p "請指定備份存放目錄:" beifen

請指定備份存放目錄:/opt/backup

[root@root ~

]# echo $beifen

/opt/backup

設定變數的作用範圍格式1:export 變數名 …

格式2:export 變數名=變數值 …

整數變數的運算

expr 變數1 運算子 變數2 [運算子 變數3]

常用運算子

加法運算:+

減法運算:-

乘法運算:*

除法運算:/

求模(取餘)運算:%

例:expr 3 * 4

echo $ ((3 * 4))

echo $ [3 * 4]

乘法在直接使用過程中是需要*的

環境變數

1、由系統提前建立,用來設定使用者的工作環境

2、配置檔案: /etc/profile、~/.bash_profile

常見的環境變數

pwd、path、user、shell、home

唯讀變數

用於變數值不允許被修改的情況

位置變數

表示為$n,n為1~9之間的數字

./myprog.sh one two three four five six

預定義變數

$# :命令列中位置變數的個數

$* :所有位置變數的內容

$?:上一條命令執行後返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯

$0 :當前執行的程序/程式名

注:在shell中,$ @和$ *都表示命令行所有引數(不包括$ 0),但是$ * 將命令列的所有引數看成乙個整體,而$@則區分各個引數

Shell程式設計規範與變數

shell指令碼的概念 將執行的命令按順序儲存到乙個文字檔案 給該檔案可執行許可權 可結合各種shell空值語句已完成更複雜的操作 shell指令碼應用場景 重複性操作 互動性任務 批量事務處理 服務執行狀態監控 定時任務執行 什麼是 shell指令碼 呢?簡單的說,只要將平時使用的各種linux命...

Shell程式設計規範與變數

四 重定向與管道操作 五 read使用語法 六 shell變數的作用,型別 七 shell變數賦值 八 linux中的運算 九 特殊的shell變數 什麼是shell指令碼?簡單來說,只要將平時使用的各種linux命令按順序儲存到乙個文字檔案中,然後新增可執行許可權,這個檔案就成了乙個shell指令...

Shell程式設計規範與變數

shell指令碼的概念 將要執行的命令按順序儲存到乙個文字檔案 給該檔案可執行許可權 可結合各自shell控制語句以完成更複雜的操作 shell指令碼應用場景 重複性操作 互動性任務 批量事務處理 指令碼執行狀態監測 定時任務執行 簡單來說,將平時使用的各種linux命令按順序儲存到乙個文字檔案,新...