目錄
一.Shell腳本的變量基本介紹
1.Shell腳本的變量是什么?
2.變量的作用
3.變量作用范圍
4.刪除變量
二.變量的類型
1.自定義變量
1.1 命名要求
1.2 定義新的變量
1.3?查看定義的變量的值
1.4 賦值時使用符號
1.5 從鍵盤輸入內(nèi)容為變量賦值
2.環(huán)境變量
3.只讀變量
4.位置變量
5.預(yù)定義變量
三.整數(shù)變量的運(yùn)算
一.Shell腳本的變量基本介紹
1.Shell腳本的變量是什么?
變量是計算機(jī)語言中能儲存計算結(jié)果或能表示值的抽象概念。保存將來會變化的數(shù)據(jù),即使數(shù)據(jù)變
化,直接調(diào)用變量即可。
Shell 變量用來存放系統(tǒng)和用戶需要使用的特定參數(shù)(值),而且這些參數(shù)可以根據(jù)用戶的設(shè)定或
系統(tǒng)環(huán)境的變化而相應(yīng)變化。通過使用變量,Shell 程序能夠提供更加靈活的功能,適應(yīng)性更強(qiáng)。
2.變量的作用
用來存放系統(tǒng)和用戶需要使用的特定參數(shù)(值)
-
變量名:使用固定的名稱,由系統(tǒng)預(yù)設(shè)或用戶定義
-
變量值:能夠根據(jù)用戶設(shè)置、系統(tǒng)環(huán)境的變化而變化
3.變量作用范圍
默認(rèn)情況下,新定義的變量只在當(dāng)前的Shell環(huán)境中有效,因此稱為局部變量。當(dāng)進(jìn)入子程序或新的子Shell環(huán)境時局部變量將無法再使用。
可以通過內(nèi)部命令export將指定的變量導(dǎo)出為全局變量,使用戶定義的變量在所有的子Shell環(huán)境中能夠繼續(xù)使用。
格式:
export 變量名=變量值
3.1 臨時設(shè)置
3.2 永久設(shè)置,需要在/etc/profile文件里添加
vim /etc/profile
export PATH+=:/mnt
[root@localhost data]#source /etc/profile
[root@localhost data]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data:/mnt
4.刪除變量
格式:
unset 變量名
二.變量的類型
-
自定義變量:由用戶自己定義、修改和使用
-
特殊變量:環(huán)境變量,只讀變量,位置變量,預(yù)定義變量
環(huán)境變量:由系統(tǒng)維護(hù),用于設(shè)置工作環(huán)境
只讀變量:只可以讀取不可以更改
位置變量:通過命令行給腳本傳遞參數(shù)
預(yù)定義變量:Bash中內(nèi)置的一類變量,不能修改??? 有些規(guī)定好的變量 放在那里讓你使用
1.自定義變量
1.1 命名要求
-
區(qū)分大小寫
-
不能使程序中的保留字和內(nèi)置變量:如:if, for,hostname 命令?
-
只能使用數(shù)字、字母及下劃線,且不能以數(shù)字開頭
-
不要使用內(nèi)置的變量,使用英文盡量使用詞義通俗易懂,PATH
-
大駝峰 StudentFirstName
-
小駝峰 studentFirstName
-
下劃線 student_name
1.2 定義新的變量
格式:
變量名=變量值?
1.3?查看定義的變量的值
格式:
echo $變量名
1.4 賦值時使用符號
-
雙引號:允許通過$符號引用其他變量值
-
單引號:禁止引用其他變量值, $視為普通字符
-
反撇號:命令替換,提取命令執(zhí)行后的輸出結(jié)果,``和$(…)作用相同
-
{}:分隔變量值
-
定義變量時中間有特殊字符,如空格,可以使用單引號或雙引號
1.5 從鍵盤輸入內(nèi)容為變量賦值
方法一:
read -p “提示信息” 變量名
方法二:
#!/bin/bash
echo -n "提示信息:"
read 變量名
方法一:
方法二:
2.環(huán)境變量
使用 env 命令可以查看到當(dāng)前工作環(huán)境下的環(huán)境變量
配置文件:/etc/profile(全局生效)、~/.bash_profile(當(dāng)前用戶環(huán)境)
可以使子進(jìn)程(包括孫子進(jìn)程)繼承父進(jìn)程的變量,但是無法讓父進(jìn)程使用子進(jìn)程的變量
一旦子進(jìn)程修改從父進(jìn)程繼承的變量,將會新的值傳遞給孫子進(jìn)程
一般只在系統(tǒng)配置文件中使用,在腳本中較少使用
2.1 常用環(huán)境變量
- $USER 表示用戶名稱
- $HOME 表示用戶的宿主目錄
- $LANG 表示語言和字符集
- $PWD 表示當(dāng)前所在工作目錄
- $PATH 表示可執(zhí)行用戶程序的默認(rèn)路徑
2.2 設(shè)置系統(tǒng)根據(jù)環(huán)境變量自動設(shè)置可執(zhí)行程序
echo $PATH #查看當(dāng)前搜索路徑
PATH="$PATH:/root" #將/root目錄添加到搜索路徑
export PATH="$PATH:/root" #輸出為全局環(huán)境變量
設(shè)置永久有效:
echo 'export PATH=$PATH:/root' >> /etc/profile #將全局環(huán)境變量追加到/etc/profile中
3.只讀變量
readonly
命令用于定義只讀shell變量和shell函數(shù)。readonly
命令的選項-p
可以輸出顯示系統(tǒng)中所有定義的只讀變量。
格式:
readonly [選項] [參數(shù)]
- 變量值不允許修改(重新賦值)的情況
- 無法使用 unset 刪除
- 最快方法重啟
4.位置變量
- 當(dāng)執(zhí)行命令行操作時,第一個字段表示命令名或腳本程序名,其余的字符串參數(shù)按照從左到右的順序依次賦值給位置變量。
- $n: n為數(shù)字,$0代表命令本身,$1- $9代表帶一個到第九個參數(shù),十以上的參數(shù)需要使用大括號表示,比如第十個參數(shù)為${10}
示例腳本1:輸出對應(yīng)位置內(nèi)容(第2、5、10個內(nèi)容)
示例腳本2:使用位置變量進(jìn)行加法運(yùn)算
5.預(yù)定義變量
?系統(tǒng)直接定義好的變量,直接使用即可
$* | 表示所有位置參數(shù)的內(nèi)容看成一個整體返回 |
$@ | 表示所有位置參數(shù)的內(nèi)容分割成n份,每份作為一個獨(dú)立的個體返回 |
$? |
表示前一條命令執(zhí)行后的返回狀態(tài),返回值為 0 表示執(zhí)行正確,返回任何非 0值均表示執(zhí)行出現(xiàn)異常 |
$# | 表示命令行中位置參數(shù)的總個數(shù) |
$0 | 表示當(dāng)前執(zhí)行的腳本或程序的名稱 即當(dāng)前腳本的名字 |
$$ | 當(dāng)前進(jìn)程ID |
$! | 后臺任務(wù)最后一個ID |
三.整數(shù)變量的運(yùn)算
(shell默認(rèn)只支持整數(shù)的運(yùn)算)
- 格式:
expr 變量1 運(yùn)算符 變量2 [運(yùn)算符 變量3]
- 運(yùn)算符:
+ 加法、-減法、\*乘法、/除法、%取余
- 常見的運(yùn)算表達(dá)式:(result代表自定義變量,可用任意代替)
- result=$(expr 變量1 運(yùn)算符 變量2)
- result=$((變量1 運(yùn)算符 變量2))
- result=$[變量1 運(yùn)算符 變量2]
- let result=變量1 運(yùn)算符 變量2
- i++ 相當(dāng)于 i=$[$i + 1]? ? ? ? i++是先賦值再運(yùn)算
- i--? ?相當(dāng)于 i=$[$i - 1]?
-
i+=1相當(dāng)于i=$[$i + 1]
舉例如下:(a=10,b=20)
公式:result=$(expr 變量1 運(yùn)算符 變量2)
數(shù)字運(yùn)算:i=$(expr 10 \* 20 )
變量運(yùn)算:i=$(expr $a?\* $b?)
公式:result=$((變量1 運(yùn)算符 變量2))
數(shù)字運(yùn)算:e=$(( 10 * 20 ))
變量運(yùn)算:e=$(( $a * $b?))
公式:result=$[變量1 運(yùn)算符 變量2]
數(shù)字運(yùn)算:j=$[ 10 * 20 ]
變量運(yùn)算:j=$[ $a * $b?]
公式:let result=變量1 運(yùn)算符 變量2
數(shù)字運(yùn)算:let m=10*20
變量運(yùn)算:let m=$a*$b文章來源:http://www.zghlxwxcb.cn/news/detail-721952.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-721952.html
到了這里,關(guān)于Shell腳本——變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!