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命令按順序儲存到乙個文字檔案,新...