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=value2.2 變數的引用中間的等於號為賦值符號,賦值符號的左右兩邊不能直接跟空格,否則shell會將其視為命令。
在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之後,依序執行其...