【拔刀吧少年】之shell编程规范与变量
shell編程規范與變量
- 一、Shell腳本概述
- 1、shell腳本的概念
- 2、shell腳本應用場景
- 3、shell的作用——命令翻譯器,“翻譯官”(`又稱命令的組合`)
- 二、用戶的登錄shell
- 三、shell腳本的構成
- 四、shell腳本的執行
- 五、重定向
- 1、重定向——交互式硬件設備
- 2、重定向——重定向操作(用于自動化腳本,輸出查證)
- 六、Shell腳本變量
- 1、變量的作用
- 2、變量的分類
- 七、自定義變量
- 1、定義新變量
- 2、查看變量的值
- 3、賦值時使用引號
- 4、read命令獲取輸入內容
- 5、變量作用范圍(export)
- 6、整數變量的運算
- 八、環境變量
- 九、只讀變量
- 十、位置變量
- 十一、預定義變量
- 總結
一、Shell腳本概述
1、shell腳本的概念
將要執行的命令按順序保存到一個文本文件
給該文件可執行權限
可結合各種shell控制語句以完成更復雜的操作
2、shell腳本應用場景
重復性操作
交互性任務
批量事務處理
服務運行狀態監控
定時任務執行
3、shell的作用——命令翻譯器,“翻譯官”(又稱命令的組合)
介于系統內核與用戶之間,負責解釋命令行
二、用戶的登錄shell
三、shell腳本的構成
腳本申明(解釋器):若第一行為“#!/bin/bash” ,表示此行以下的代碼語句是通過/bin/bash程序來結實執行,#!/bin/bash為默認解釋器,還有其他類型的解釋器,比如#!/usr/bin/python、#!/usr/bin/expect。
注釋信息:以“#”開頭的語句表示為注釋信息,被注釋的語句在運行腳本時將不被執行。
可執行語句:比如echo命令,用于輸出“ ”之間的字符串。
四、shell腳本的執行
方法一:指定路徑的命令,要求文件必須有執行(x)權限
方法二:指定shell來解釋腳本,不要求文件必須有寫(x)的權限
①、sh腳本路徑
②、source腳本路徑
五、重定向
1、重定向——交互式硬件設備
2、重定向——重定向操作(用于自動化腳本,輸出查證)
六、Shell腳本變量
1、變量的作用
用來存放系統和用戶需要使用的特定參數(值)
變量名:使用固定的名稱,由系統預設或用戶定義
變量值:能夠根據用戶設置、系統環境的變化而變化
2、變量的分類
自定義變量:由用戶自己定義、修改和使用
環境變量:由系統維護,用于設置工作環境
只讀變量:用于變量值不允許被修改的情況
位置變量:通過命令行給腳本程序傳遞參數
預定義變量:bash中內置的一類變量,不能直接修改
七、自定義變量
1、定義新變量
命名規則:以字母或下劃線開頭,區分大小寫(建議大寫)
2、查看變量的值
3、賦值時使用引號
看cpu命令free -m
free -m | grep “Men:”
4、read命令獲取輸入內容
①、方法一:
read -p “提示信息” 變量名(-s不顯示輸入信息,多用于密碼輸入)
echo $“變量名”
②、方法二:
echo -n “提示信息”
read 變量名
echo $變量名
5、變量作用范圍(export)
默認情況下,新定義的變量只在當前的Shell環境中有效,因此稱為局部變量。當進入子程序或新的子Shell環境時,局部變量將無法再使用。
可以通過內部命令export將指定的變量導出為全局變量,使用戶定義的變量在所有的子Shell環境中能夠繼續使用。
格式1:export 變量名
格式2:export 變量名=變量值
可以使用 pstree 命令查看Shell環境,輸入 bash 命令進入子Shell環境,按Ctrl+D組合鍵或輸入 exit 命令退出子Shell環境。
6、整數變量的運算
1.格式:expr 變量1 運算符 變量2 (運算符 變量3)
2.運算符: + 加法、- 減法、、* 乘法、/ 除法、% 取余
常用的運算表達式:
i=$(expr 10 * 3)
i=$((10 * 3))
i=$[10 * 3]
let i=10*3
i++ 相當于 i=[[[i+1]
i-- 相當于 i=[[[i-1]
i+=2 相當于 i=[[[i+2]
bash不支持浮點運算,如果需要進行浮點運算,需要借助bc, awk 處理,awk可保留小數點后6位
八、環境變量
使用 env 命令可以查看到當前工作環境下的環境變量
變量USER表示用戶名稱,HOME表示用戶的宿主目錄,LANG表示語言和字符集,PWD表示當前所在的工作目錄,變量PATH表示可執行程序的默認搜索路徑。
九、只讀變量
用于變量值不允許被修改的情況
十、位置變量
當執行命令行操作時,第一個字段表示命令名或腳本程序名,其余的字符串參數按照從左到右的順序依次賦值給位置變量。
$n:n為數字,$0代表命令本身,1~9代表第一個到第九個參數,十以上的參數需要使用大括號表示,比如第十個參數為 ${10}。
十一、預定義變量
?、*、?、@:表示命令或腳本要處理的參數。
$*:把所有參數看成以空格分隔的一個字符串整體,代表"$1 $2 $3 $4"。
$@:把各個參數加上雙引號分隔成n份的參數列表,每個參數是獨立 的,代表"$1" “$2” “$3” “$4”。
$0:表示當前執行的腳本或命令的名稱。
$#:表示命令或腳本要處理的參數的個數。
$?:表示前一條命令或腳本執行后的返回狀態碼,返回值為0表示執行正確,返回任何非0值均表示執行出現異常。
總結
shell重要的一點就是語法錯誤,shell腳本是一行一行執行,注意一個符號或者一個空格錯了都執行不了。
這里的我認為的重點是腳本里的符號,’ " ` 這三個的意思。還有幾個變量。很多小白剛開始做的時候都會遇到輸入命令不啟動。別著急,耐心點。
總結
以上是生活随笔為你收集整理的【拔刀吧少年】之shell编程规范与变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【鬼网络】之DNS域名解析服务
- 下一篇: 【拔刀吧少年】之条件语句