Shell程式設計規範與變數

2021-10-10 05:44:41 字數 4528 閱讀 4225

shell指令碼的概念

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

給該檔案可執行許可權

可結合各種shell空值語句已完成更複雜的操作

shell指令碼應用場景

重複性操作

互動性任務

批量事務處理

服務執行狀態監控

定時任務執行

什麼是「shell指令碼」呢?

簡單的說,只要將平時使用的各種linux命令按順序儲存到乙個文字檔案中,然後新增可執行許可權,這個檔案就是乙個shell指令碼

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

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

使用者的登入shell

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

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

[root@server ~]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh

1.編寫指令碼**

​ 使用vim文字編輯器

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

[root@server ~]# vim first.sh

cd /boot

pwdls -lh vml*

2.執行指令碼檔案

./first.sh #必須有x許可權

sh first.sh

source first.sh

3.更完善的指令碼構成

指令碼宣告

注釋資訊

可執行語句

[root@server ~]# vim first.sh

#!/bin/bash

# this is my first.sh

cd /boot

echo "當前的目錄位於:"

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

ls -lh vml*

1.互動式硬體裝置

​ 標準輸入:從該裝置接收使用者輸入的資料

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

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

型別裝置檔案

檔案描述編號

預設裝置

標準輸入

/dev/stdin0鍵盤

標準輸出

/dev/stdout

1顯示器

標準錯誤輸出

/dev/stderr

2顯示器

標準輸入,標準輸出和標準錯誤預設使用鍵盤和顯示器作為關聯的裝置,與作業系統進行互動,完成最基本的輸入,輸出操作,即從鍵盤接收使用者輸入的各種命令字串,輔助空值資訊,並將命令結果輸出到螢幕上;如果命令執行出錯,也會將錯誤資訊反饋到螢幕上。

2.重定向操作

在實際的linux系統維護中,可以改變輸入,輸出內容的方向,而不使用預設的標準輸入,輸出裝置(鍵盤和顯示器),這種操作成為重定向。

型別操作符

用途重定向輸入

<

從指定的檔案讀取資料,而不是從鍵盤輸入

重定向輸出

>

將輸出結果儲存到指定的檔案(覆蓋原有內容)

重定向輸出

>>

將輸出結果追加到指定的檔案尾部

標準錯誤輸出

2>

將錯誤資訊儲存到指定的檔案(覆蓋原有內容)

標準錯誤輸出

2>>

將錯誤資訊追加到指定的檔案中

混合輸出

&>

將標準輸出,標準錯誤的內容儲存到同乙個檔案中

3.管道操作符號"|"

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

cmd1 | cmd2 |[...| cmdn]
變數的作用

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

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

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

變數的型別

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

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

定義乙個新的變數

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

變數名=變數值

檢視變數的值

echo $變數名

可以輸入單個,也可以多個

[root@server ~]# echo $product $version

python 1.1.1

賦值時使用引號

雙引號:允許通過$符號引用其他變數值

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

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

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

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

設定變數的作用範圍

格式1:export 變數名...

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

[root@server ~]# export product version 匯出為全域性變數

[root@server ~]# bash

[root@server ~]# echo $product $version

python 1.1.1

整數變數的運算

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

常用運算子

加法運算:+

減法運算:—

乘法運算:\*

除法運算:/

求模取餘運算:%

1.環境變數

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

配置檔案:/etc/profile,~/.bash_profile

常見的環境變數

pwd,path

user,shell,home

[root@server ~]# echo $path

/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@server ~]# path="$path:/root"

[root@server ~]# echo $path

/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root

2.唯讀變數

shell變數中一種特殊情況,一經設定,其值是不可改變的,這種變數被稱為唯讀變數。

[root@server1 ~]# name=cloud

[root@server1 ~]# readonly name #設定為唯讀變數

[root@server1 ~]# echo $name

cloud

[root@server1 ~]# name=yun #不可重新賦值

-bash: name: 唯讀變數

[root@server1 ~]# unset name #不可刪除

-bash: unset: name: 無法反設定: 唯讀 variable

注:唯讀變數的改變是不可逆的,一經唯讀,無法挽回。

3、位置變數(也稱為位置引數,使用$1,$2,$3...$9表示)

當執行命令列操作時,第乙個字段表示命令名或指令碼程式名,其餘的字串引數安裝從左到右的書序依次賦值給位置變數。

[root@server1 ~]# vim adder2num.sh

#!/bin/bash

sum=`expr $1 + $2`

echo "$1 + $2 =$sum"

[root@server1 ~]# chmod +x adder2num.sh

[root@server1 ~]# ./adder2num.sh 12 34

12 + 34 =46

4、預定義變數

$#:表示命令行中位置引數的個數

$*:表示所有位置引數的內容

$?:表示前一條命令執行後的返回狀態,為0即正確,任何非0即出現異常

$0:表示當前執行的指令碼或程式的名稱

Shell程式設計規範與變數

shell的作用 編寫第乙個shell指令碼 重定向與管道操作 shell變數的作用 型別 自定義變數 特殊的shell變數 shell指令碼就是將要執行的命令按順序儲存到乙個文字檔案,並給該檔案可執行許可權,方便一次性執行的乙個程式檔案。主要是方便管理員進行設定或管理,可結合各種shell控制語句...

Shell程式設計規範與變數

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

Shell程式設計規範與變數

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