shell脚本详解(一)——Shell编程规范与变量
生活随笔
收集整理的這篇文章主要介紹了
shell脚本详解(一)——Shell编程规范与变量
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
詳解Shell編程規(guī)范與變量
- 一、Shell腳本概述
- 1、shell腳本的概念
- 2、shell腳本應(yīng)用場景
- 3、shell的作用——命令翻譯器,“翻譯官”
- 二、用戶的登錄shell
- 三、shell腳本的構(gòu)成
- 四、shell腳本的執(zhí)行
- 方法一:指定路徑的命令,要求文件必須有執(zhí)行(x)權(quán)限
- 方法二:指定shell來解釋腳本,不要求文件必須有寫(x)的權(quán)限
- ①、sh腳本路徑
- ②、source腳本路徑
- 五、重定向
- 1、重定向——交互式硬件設(shè)備
- 2、重定向——重定向操作
- 六、Shell腳本變量
- 1、變量的作用
- 2、變量的分類
- 七、自定義變量
- 1、定義新變量:
- 2、查看變量的值:
- 3、賦值時使用引號
- 4、read命令獲取輸入內(nèi)容
- ①、方法一:
- ②、方法二:
- 5、變量作用范圍
- 6、整數(shù)變量的運(yùn)算
- 7、浮點運(yùn)算(需借助bc,awk處理)
- ①、bc
- ②、awk
- 八、環(huán)境變量
- 九、只讀變量
- 十、位置變量
- 十一、預(yù)定義變量
一、Shell腳本概述
1、shell腳本的概念
- 將要執(zhí)行的命令按順序保存到一個文本文件
- 給該文件可執(zhí)行權(quán)限
- 可結(jié)合各種shell控制語句以完成更復(fù)雜的操作
2、shell腳本應(yīng)用場景
- 重復(fù)性操作
- 交互性任務(wù)
- 批量事務(wù)處理
- 服務(wù)運(yùn)行狀態(tài)監(jiān)控
- 定時任務(wù)執(zhí)行
3、shell的作用——命令翻譯器,“翻譯官”
- 介于系統(tǒng)內(nèi)核與用戶之間,負(fù)責(zé)解釋命令行
二、用戶的登錄shell
三、shell腳本的構(gòu)成
- 腳本申明(解釋器):若第一行為“#!/bin/bash” ,表示此行一下的代碼語句是通過/bin/bash程序來結(jié)實執(zhí)行,#!/bin/bash為默認(rèn)解釋器,還有其他類型的解釋器,比如#!/usr/bin/python、#!/usr/bin/expect。
- 注釋信息:以“#”開頭的語句表示為注釋信息,被注釋的語句在運(yùn)行腳本時將不被執(zhí)行。
- 可執(zhí)行語句:比如echo命令,用于輸出“ ”之間的字符串。
四、shell腳本的執(zhí)行
方法一:指定路徑的命令,要求文件必須有執(zhí)行(x)權(quán)限
方法二:指定shell來解釋腳本,不要求文件必須有寫(x)的權(quán)限
①、sh腳本路徑
②、source腳本路徑
五、重定向
1、重定向——交互式硬件設(shè)備
| 標(biāo)準(zhǔn)輸入 | /dev/stdin | 0 | 鍵盤 |
| 標(biāo)準(zhǔn)輸出 | /dev/stdout | 1 | 顯示器 |
| 標(biāo)準(zhǔn)錯誤輸出 | /dev/stderr | 2 | 顯示器 |
2、重定向——重定向操作
| 類型 | 操作符 | 用途 |
| 重定向輸入 | < | 從指定的文件讀取數(shù)據(jù) |
| 重定向輸出 | > | 將標(biāo)準(zhǔn)輸出結(jié)果 保存 到指定的文件,并且覆蓋原有內(nèi)容 |
| >> | 將標(biāo)準(zhǔn)輸出結(jié)果 追加 到指定的文件的尾部,不覆蓋原有內(nèi)容 | |
| 標(biāo)準(zhǔn)錯誤輸出 | 2> | 將錯誤信息 保存 到指定的文件,并且覆蓋原有內(nèi)容 |
| 2>> | 將錯誤信息 追加 到指定的文件的尾部,不覆蓋原有內(nèi)容 | |
| 混合輸出 | &> | 將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤保存到同一文件中 |
| 2>&1 | 將標(biāo)準(zhǔn)錯誤輸出重定向到標(biāo)準(zhǔn)輸出 |
六、Shell腳本變量
1、變量的作用
- 用來存放系統(tǒng)和用戶需要使用的特定參數(shù)(值)
- 變量名:使用固定的名稱,由系統(tǒng)預(yù)設(shè)或用戶定義
- 變量值:能夠根據(jù)用戶設(shè)置、系統(tǒng)環(huán)境的變化而變化
2、變量的分類
- 自定義變量:由用戶自己定義、修改和使用
- 環(huán)境變量:由系統(tǒng)維護(hù),用于設(shè)置工作環(huán)境
- 只讀變量:用于變量值不允許被修改的情況
- 位置變量:通過命令行給腳本程序傳遞參數(shù)
- 預(yù)定義變量:bash中內(nèi)置的一類變量,不能直接修改
七、自定義變量
1、定義新變量:
- 命名規(guī)則:以字母或下劃線開頭,區(qū)分大小寫(建議大寫)
2、查看變量的值:
3、賦值時使用引號
| 雙引號 | 允許通過$符號引用其他變量值 |
| 單引號 | 禁止引用其他變量值, $視為普通字符 |
| 反撇號 | 命令替換,提取命令執(zhí)行后的輸出結(jié)果,``和$(…)作用相同 |
4、read命令獲取輸入內(nèi)容
①、方法一:
read -p "提示信息" 變量名 echo $"變量名"②、方法二:
echo -n "提示信息" read 變量名 echo $變量名5、變量作用范圍
- 默認(rèn)情況下,新定義的變量只在當(dāng)前的Shell環(huán)境中有效,因此稱為局部變量。當(dāng)進(jìn)入子程序或新的子Shell環(huán)境時,局部變量將無法再使用。
- 可以通過內(nèi)部命令export將指定的變量導(dǎo)出為全局變量,使用戶定義的變量在所有的子Shell環(huán)境中能夠繼續(xù)使用。
- 格式1:export 變量名
- 格式2:export 變量名=變量值
- 可以使用 pstree 命令查看Shell環(huán)境,輸入 bash 命令進(jìn)入子Shell環(huán)境,按Ctrl+D組合鍵或輸入 exit 命令退出子Shell環(huán)境。
6、整數(shù)變量的運(yùn)算
格式:expr 變量1 運(yùn)算符 變量2 (運(yùn)算符 變量3)運(yùn)算符: + 加法、- 減法、* 乘法、/ 除法、% 取余 常用的運(yùn)算表達(dá)式: i=$(expr 10 \* 3) i=$((10 * 3)) i=$[10 * 3] let i=10*3i++ 相當(dāng)于 i=$[$i+1] i-- 相當(dāng)于 i=$[$i-1] i+=2 相當(dāng)于 i=$[$i+2]7、浮點運(yùn)算(需借助bc,awk處理)
①、bc
②、awk
八、環(huán)境變量
- 使用 env 命令可以查看到當(dāng)前工作環(huán)境下的環(huán)境變量
- 變量USER表示用戶名稱,HOME表示用戶的宿主目錄,LANG表示語言和字符集,PWD表示當(dāng)前所在的工作目錄,變量PATH表示可執(zhí)行程序的默認(rèn)搜索路徑。
九、只讀變量
- 用于變量值不允許被修改的情況
十、位置變量
- 當(dāng)執(zhí)行命令行操作時,第一個字段表示命令名或腳本程序名,其余的字符串參數(shù)按照從左到右的順序依次賦值給位置變量。
- $n:n為數(shù)字,$0代表命令本身,1~9代表第一個到第九個參數(shù),十以上的參數(shù)需要使用大括號表示,比如第十個參數(shù)為 ${10}。
十一、預(yù)定義變量
$*、$@:表示命令或腳本要處理的參數(shù)。$*:把所有參數(shù)看成以空格分隔的一個字符串整體,代表"$1 $2 $3 $4"。$@:把各個參數(shù)加上雙引號分隔成n份的參數(shù)列表,每個參數(shù)是獨(dú)立 的,代表"$1" "$2" "$3" "$4"。$0:表示當(dāng)前執(zhí)行的腳本或命令的名稱。$#:表示命令或腳本要處理的參數(shù)的個數(shù)。$?:表示前一條命令或腳本執(zhí)行后的返回狀態(tài)碼,返回值為0表示執(zhí)行正確,返回任何非0值均表示執(zhí)行出現(xiàn)異常。總結(jié)
以上是生活随笔為你收集整理的shell脚本详解(一)——Shell编程规范与变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存大小决定游戏体验?开发者亲测告诉你真
- 下一篇: 硬盘容量翻倍速,内存飙升!科技革命催生数