Shell程式設計從入門到精通 變數和引用

2021-10-06 03:03:28 字數 3997 閱讀 8504

1.1 什麼是變數

顧名思義,變數就是程式語言中的乙個可以變化的量,當然,可以變化的是變數的值。

1.2 變數的命名
在shell中,變數名可以由字母、數字或者下劃線組成,並且只能以字母數字或者下劃線開頭,變數名的長度並不做限制,但是為了提高程式的可讀性,建議使用者使用相對較短的字串作為變數名。在通常情況下,變數名應該由有明確的含義的英文單詞組成,這樣,使用者通過變數名就可以了解變數的作用。

1.3 變數的型別
在shell中變數的型別無需顯示的宣告,變數的資料型別會根據不同的操作有所變化。

1.4 變數的定義

直接定義

#! /bin/bash

#定義變數a

a=1#定義變數b

b="hello"

#定義變數c

c="hello world"

使用declare宣告

declare的語法如為:declare attribute variable

其中attribute表示變數的屬性,常用的屬性如下:

屬性含義

-p顯示所有變數的值。

-i將變數定義為整數。在之後就可以直接對表示式求值,結果只能是整數。如果求值結果失敗或者不是整數,就設定為0

-r將變數宣告為唯讀變數。

-a變數宣告為陣列變數,在shell中所有的變數都是陣列,賦值給沒有下標的變數與賦值給下標為0的陣列元素相同。

-f顯示所有自定義函式,包括名稱和函式體。

-x將變數設定為環境變數,這樣在隨後的指令碼和程式中就可以使用了。

#! /bin/bash

declare -i x

#將算術式賦值給變數x

x=6/3

echo

$#取消變數x的整數屬性

declare +x x

x=3.14

echo

$

1.5 變數和引號

單引號(』』)

單引號括起來的字元都作為普通字元出現。
雙引號("")

用雙引號括起來的字元,除「$」、「\」、"'"和「「」這幾個字元仍是特殊字元並保留其特殊功能,其餘字元作為普通字元對待。
反引號(``)

被反引號括起來的字串被shell解釋為命令,在執行時,shell首先執行該命令,並以標準輸出結果取代整個反引號部分。
#! /bin/bash

#輸出當前目錄

echo

"current directory is `

pwd`

"

1.6 變數的作用域

全域性變數

在shell中全域性變數可以在指令碼中定義也可以在函式中定義。在指令碼中定義的變數都是全域性變數,其作用域為從被定義的地方開始,一直到shell指令碼結束或者被顯式的刪除。

#! /bin/bash

#定義函式

func(

)#在指令碼中定義變數x

v1=100

#呼叫函式

func

#輸出變數x的值

echo

"$v1"

區域性變數

在shell中,可以在函式內部通過local關鍵字定義區域性變數,另外,函式的引數也是區域性變數。

#!/bin/bash

#定義函式

func(

)#呼叫函式

func

#輸出變數的值

echo

"$v2"

1.7 系統變數

變數說明

$nn是乙個整數,從1開始,表示引數的位置,例如$1便是第乙個引數。

$#命令列引數的個數

$0當前shell指令碼的名稱

$?前乙個命令或者函式的返回狀態碼

$*以」引數1 引數2「…的形式將所有的引數通過乙個字串返回

$@以」引數1「 」引數2「…的形式返回每個引數

$$返回本程式的程序id

1.8 環境變數

常用的變數如下,你也可以通過set命令獲取所有環境變數。

變數說明

path

命令搜尋路徑,以冒號作為分隔符。

home

使用者主路經的路徑名,是cd命令的預設引數。

ifs定義shell使用的分隔符

logname

當前的登入名。

shell

shell的全路徑名

term

終端型別

tmout

shell自動退出的時間,單位為秒,若設定為0則禁止shell自動退出

pwd當前工作目錄

2.1 變數的賦值

賦值語法為:variable_name=value

中間的等於號為賦值符號,賦值符號的左右兩邊不能直接跟空格,否則shell會將其視為命令。

2.2 變數的引用
在shell中,使用者可以通過在變數名前加」$「來獲取該變數的值。 為了使shell能夠正確的界定變數名,避免混淆,使用者引用變數時可以使用大括號將變數括起來,如下:

echo

"$abc"

2.3 清除變數

清除變數使用unset命令,用法如下:unset variable_name

3.1 引用

所謂引用就是將字串使用引用符號括起來,以防止其中的特殊字元被shell解釋為其他含義。

shell中一共有四種引用符號如下表:

引用符號

說明雙引號

除美元符號、單引號、反引號和反斜線外,其他所有字元都保持字面意義。

單引號所有字元都保持字面意義

反引號反引號中的字串將被解釋為shell命令

反斜線轉義字元,遮蔽後面字元的特殊含義

3.2 全引用

因為被單引號括起來的字串都保持其字面意義,因此這種引用方式被稱為全引用。

#!/bin/bash

v1="hello world!"

#輸出含有變數名的字串

echo

'this is $v1'

3.3 部分引用
因為雙引號括起來的字元,其中包含的字元除美元符號、反引號以及斜線外的所有字元都被解釋為字面意義,因此也稱為部分引用。

#!/bin/bash

v1="hello world!"

#輸出含有變數名的字串

echo

"this is $v1"

3.4 命令替換
所謂命令替換就是在shell程式中,將某個shell命令執行結果賦值給某個變數。在bash中有兩種方式可以用來進行命令替換,分別是反引號和圓括號:

shell_command

$(shell_command)

#! /bin/bash

v1=`

pwd`

v2=$(

pwd)

echo

"v1 = $v1"

echo

"v2 = $v2"

3.5 轉義
轉義就是轉換某些特殊字元的意義。轉義使用反斜線表示,當反斜線後面的乙個字元具有特殊意義時,反斜線將遮蔽該字元的特殊意義。

#! /bin/bash

echo

$(pwd

)echo \$(

pwd)

Go語言從入門到精通 變數的宣告

變數 variable 的功能是儲存使用者的資料。不同的邏輯有不同的物件型別,也就有不同的變數型別。經過半個多世紀的發展,程式語言已經形成一套固定的型別,這些型別在不同的程式語言中基本是相通的。常見變數的資料型別有 整型 浮點型 布林型 結構體等。go 語言作為c語言家族的新派代表,在c語言的定義方...

Go語言從入門到精通 變數的宣告

變數 variable 的功能是儲存使用者的資料。不同的邏輯有不同的物件型別,也就有不同的變數型別。經過半個多世紀的發展,程式語言已經形成一套固定的型別,這些型別在不同的程式語言中基本是相通的。常見變數的資料型別有 整型 浮點型 布林型 結構體等。go 語言作為c語言家族的新派代表,在c語言的定義方...

通用技術 Shell 程式設計從入門到精通

shell指令碼 英語 shell script 是一種電腦程式與文字檔案,內容由一連串的shell命令組成,經由unix shell直譯其內容後運作。被當成是一種指令碼語言來設計,其運作方式與直譯語言相當,由unix shell扮演命令列直譯器的角色,在讀取shell script之後,依序執行其...