Shell變數知多少

2021-10-08 14:52:38 字數 1632 閱讀 9095

本篇文章會著重討論關於shell變數的一些細節要點,例如shell變數的型別是什麼,定義shell變數的幾種方式以及它們的區別等,加深大家對shell變數的理解,以及在各個場景下如何靈活運用變數。

let』s get started.

在shell中,給變數賦予的值都被視為字串型別。

定義shell變數的三種方式

name=tom

name='tom'

name="tom"

注意:"=" 兩邊不能有空格。對於第一種方式,賦予的值不能含有空格,如果包含空格,必須用引號。例如:

#以下定義是錯誤的:

name=tom w

那麼單引號和雙引號有什麼區別呢?

對於普通的字串,用單引號和雙引號效果是一樣的,但如果賦予的值中包含了變數,希望最終能將變數的值包含在當前的賦予值中,則必須用雙引號。舉個例子:

name=tony

hello="hello, $"

echo $

如果希望獲得$的值tony, 則必須用雙引號:

hello, tony
如果用單引號,就會變成以下結果:

hello,$
全域性變數:在當前shell程序中可以被使用的變數。

區域性變數:僅能在函式內部使用的變數。

環境變數:在當前shell程序以及shell子程序中都能使用的變數。

說明:1 關於全域性變數,shell 中預設定義的變數都是全域性變數,即使變數定義在函式中,也是全域性變數。

2 區域性變數必須用關鍵字local進行宣告。

例子:

function a()
這裡申明了乙個函式,函式內部定義了兩個變數a,b。其中,a是全域性變數,b是區域性變數。

3 環境變數要通過export關鍵字進行宣告,這樣在子shell程序中也可以引用。但要注意,這種環境變數是傳子不傳父的。如果在shell子程序定義乙個變數並通過export 宣告為環境變數,那麼該程序的父程序是無法獲得這個變數的。

格式:readonly variablename

例子:

name=tony

readonly name

name=alice

test1.sh: line 3: name: readonly variable
兩種方式(直接通過**說明):

#方法1

a=`cat test.txt`

#方法2

b=$(cat test.txt)

兩種方式都可以獲取命令結果並賦值給變數。它們的區別在於:

方法1是無法做巢狀的,但方法2是可以的。

舉個例子:

正確:

path=$(cd $(dirname $0);pwd)

echo $

錯誤:

path=`cd `dirname $0`;pwd`

echo $

希望對大家有所幫助。

tony

linux環境變數知多少

linux環境變數 實際上就是使用者執行環境的引數集合。linux 是乙個多使用者的作業系統。而且在每個使用者登入系統後,都會有乙個專有的執行環境。通常每個使用者預設的環境都是相同的,而這個預設環境實際上就是一組環境變數的定義。使用者可以對自己的執行環境進行定製,其方法就是修改相應的系統環境變數 常...

閘道器知多少

閘道器 gateway 顧名思義,就是乙個網路到另乙個網路的關口。維基百科對閘道器的定義為 在計算機網路中,閘道器 gateway 是 其他伺服器通訊資料的伺服器,接收從客戶端傳送來的請求時,它就像自己擁有資源的源伺服器一樣對請求進行處理。但是,很多時候,我們會將路由器和閘道器認為是同乙個概念。其實...

原型知多少

除了undefind,number,string,boolean是簡單的值型別,其他的null,object,function都是物件 函式有prototype屬性,它是物件,是函式屬性和方法的集合 每個物件都有乙個 proto 屬性 隱式原型 它指向建立這個物件的函式的原型 函式也是一種物件 ob...