shell變數詳解

2021-08-02 14:36:04 字數 3165 閱讀 5602

1 shell變數基礎

shell變數是一種很「弱」的變數,預設情況下,乙個變數儲存乙個串,shell不關心這個串是什麼含義。所以若要進行數**算,必須使用一些命令例如let、declare、expr、雙括號等。shell變數可分為兩類:區域性變數和環境變數。區域性變數只在建立它們的shell中可用。而環境變數則可以在建立它們的shell及其派生出來的任意子程序中使用。有些變數是使用者建立的,其他的則是專用shell變數。變數名必須以字母或下劃線字元開頭。其餘的字元可以是字母、數字(0~9)或下劃線字元。任何其他的字元都標誌著變數名的終止。名字是大小寫敏感的。給變數賦值時,等號周圍不能有任何空白符。為了給變數賦空值,可以在等號後跟乙個換行符。用set命令可以檢視所有的變數,unset var命令可以清除變數var,var相當於沒有定義過。readonly var可以把var變為唯讀變數,定義之後不能對var進行任何更改。對shell變數的引用方式很多,用這些方式可以方便的獲取shell變數的值,變數值的長度,變數的乙個字串,變數被部分替換後的值等等。shell變數常見引用方式如下:

2 環境變數

環境變數的定義方法如下:

var=value

export var

shell在初始化的時候會在執行profile等初始化指令碼,指令碼中定義了一些環境變數,這些變數會在建立子程序時傳遞給子程序。

用env命令可以檢視當前的環境變數。常用的系統環境變數如下:

_(下劃線) 上一條命令的最後乙個引數

bash 展開為呼叫bash例項時使用的全路徑名

cdpath cd命令的搜尋路徑。它是以冒號分隔的目錄列表,shell通過它來搜尋cd命令指定的目標目錄。例如.:~:/usr

editor 內建編輯器emacs、gmacs或vi的路徑名

env 每乙個新的bash shell(包括指令碼)啟動時執行的環境檔案。通常賦予這個變數的檔名是.bashrc。

euid 展開為在shell啟動時被初始化的當前使用者的有效id

groups 當前使用者所屬的組

histfile 指定儲存命令列歷史的檔案。預設值是~/.bash_history。如果被復位,互動式shell退出時將不儲存命令列歷史

histsize 記錄在命令列歷史檔案中的命令數。預設是500

home 主目錄。未指定目錄時,cd命令將轉向該目錄

ifs 內部字段分隔符,一般是空格符、製表符和換行符,用於由命令替換,迴圈結構中的表和讀取的輸入產生的詞的字段劃分

lang 用來為沒有以lc_開頭的變數明確選取的種類確定locale類

oldpwd 前乙個工作目錄

path 命令搜尋路徑。乙個由冒號分隔的目錄列表,shell用它來搜尋命令,乙個普通值為 /usr/gnu/bin:/usr/local/bin:/usr/ucb:/usr/bin

ppid 父程序的程序id

ps1 主提示符串,預設值是$

ps2 次提示符串,預設值是》

ps3 與select命令一起使用的選擇提示符串,預設值是#?

ps4 當開啟追蹤時使用的除錯提示符串,預設值是+。追蹤可以用set –x開啟

pwd 當前工作目錄。由cd設定

random 每次引用該變數,就產生乙個隨機整數。隨機數序列可以通過給random賦值來初始化。如果random被復位,即使隨後再設定,它也將失去特定的屬性

reply 當沒有給read提供引數時設定

shell 當呼叫shell時,它掃瞄環境變數以尋找該名字。shell給path、ps1、ps2、mailcheck和ifs設定預設值。home和mail由login(1)設定

shellopts 包含一列開啟的shell選項,比如braceexpand、hashall、monitor等

uid 展開為當前使用者的使用者id,在shell啟動時初始化

3 數值變數 shell中預設把變數值當作字串,例如: age=22 age=ag

e+1e

cho 輸出結果為22+1,而不是23,因為shell將其解釋為字串,而不是數**算。 可以用let命令使其進行數**算,例如: let age=ag

e+1也

可以用d

ecla

re把變

量定義為

整型。例

如:de

clar

e−ia

ge=22

這裡就用

−i選項

把age

定義為整

型的了。

此後每次

運算,都

把age

的右值識

別為算術

表示式或

數字。4

陣列在s

hell

中可以使

用陣列,

例如:a

rray

[0]=

0arr

ay[1

]=1a

rray

[2]=

2則ar

ray就

是乙個數

組,也可

以這樣給

陣列初始

化:ar

ray=

(012

)//元

素之間以

空格分隔

可以通過

來訪問array中某個元素,

的返回值即陣列的所有元素組成的串,

的返回值即陣列的元素個數,

返回第乙個和第二個元素組成的串。0表示開始的位置,2表示要返回的元素個數,開始位置可以為0-2(0減去2)之類的,表示從倒數第二個元素開始。 下面寫個稍微複雜點的例子:

#!/bin/bash

for ((i=0; i<100; i++))

doarray[$i]=$i

done

for ((i=0; i<100; i++))

doecho

$done

**:

詳解shell 變數

1.簡介 變數是任何一種程式語言都必不可少的組成部分,變數用來存放各種資料。指令碼語言在定義變數時通常不需要指明型別,直接賦值就可以,shell變數也遵循這個規則。在bash shell 中,每乙個變數的值都是字串,無論你給變數賦值時有沒有使用引號,值都會以字串的形式儲存。這意味著,bash she...

Shell變數基礎詳解 Authority

一 變數簡介 變數是暫時儲存資料的地方及資料標記,所儲存的資料存在於記憶體空間中,通過正確地呼叫記憶體空間中變數的名字就可以取出與變數對應的資料。使用變數的最大好處就是使程式開發更為方便,當然,在程式設計中使用變數也是必須的。否則就很難完成相關的工作。變數賦值的方式 先寫變數名稱,緊接著就是 最後是...

變數 shell變數( )

變數型別 執行shell時,會同時存在三種變數 a 區域性變數 在指令碼或命令中定義,僅在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。b 環境變數 所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其正常執行。必要時shell指令碼也可以定義...