首頁 > 軟體

Bash簡明教學--變數

2020-06-16 17:31:49

1. 前言

  Bash是一門流行在*nix系統下的指令碼語言。作為一門指令碼語言,變數是一門語言的基本要素,在這篇教學中,我們將學習Bash中的變數是怎麼表示的,以及變數相關的一些語法規則。

2. Bash中的變數

  Bash作為一門程式語言,它通過變數來表示資料。Bash的變數在概念是和我們平時接觸的其他程式語言類似,都是以字元表示的一些列名字標籤,通過參照這些名字標籤來使用變數所表示的值。通過一個變數,我們可以參照一塊記憶體區域的值。一個變數的賦值操作,拋開細節,我,我們可以簡單的理解為是為這個名字標籤和記憶體區域建立一個關聯。

  在Bash中,變數是無型別的。這個和其他比如C,Java和C++等強型別語言有很大的不同。

程式碼:

var=100
echo "$var"
=> 100

var="var is not a number"
echo "$var"
=> var is not a number

3. 變數替換

  Bash中,一個變數可以理解為是這個變數的值的預留位置。參照這個變數的值得過程,可以簡單的理解為是變數替換的過程。在Bash中,變數替換是通過操作符"$"完成的。

程式碼:

var=100

echo var
=> var

echo $var
=> 100

看上面的例子,我們可以看到,通過"$"符號參照一個變數的時候,會獲得這個變數的值。而單獨使用這個變數名字的時候,在echo命令中,只是獲得了這個變數名稱的字面值而已,所以"var" 和 "$var"是不同的。

  一般情況下,使用"$"符+變數名稱來參照變數的值,但是在一些特殊的語句和命令中,我們可以省略"$"符號,只是用變數名稱來參照變數的值。比如:

  • 對變數進行賦值時候
  • 宣告變數時候
  • 在"(())"語句表示的算術計算語句中的時候
  • 使用unset命令的時候

後面在學習到這些內容相關的主題的時候,我們會看到上面提到的這些不使用"$"符號的情況。

  通過雙引號(")包裹的字串中,如果包含了變數替換,那麼變數替換是有效的。而包含在單引號(')的字串中的變數替換,是無效的,變數名稱將被作為普通字串。

程式碼:

var=100

echo "$var"
=> 100

echo '$var'
=> $var

  在雙引號中的變數進行變數替換的時候,如果變數名稱和其他字元中間沒有分隔符(一般是空格),那麼變數替換就會出現歧義,所以需要另一種方式的變數替換語法,使用${var}來進行變數替換。

程式碼:

var=100

echo "$varis100"
=>
# 輸出是空的,因為上面的變數替換的是"varis100"這個變數的值,而這個變數在上下文中沒有定義,所以是空的

echo "${var}is100"
=> 100is100

  在使用echo命令輸出一個變數的時候,需要注意一個問題。一個變數是否被包含在一個雙引號中,輸出的結果是不同的。

程式碼:

var="A B  C    D"

echo $var
=> A B C D

echo "$var"
=> A B  C   D

4. 變數賦值

  在Bash中,變數賦值的方式有很多種,通過等號(=)來進行變數的賦值是最常見的一種方式。 在使用等號進行賦值的時候,等號兩邊是不能包含空格的

程式碼:

var=100

echo "var = $var"
=> var = 100

除了使用等號來進行變數賦值以外,還可以使用"let"命令來進行賦值。

程式碼:

let var=100

echo "var = $var"
=> var = 100

在for迴圈語句中,也可以使用"for ... in ..."的方式給變數賦值。

for var in 10 20 30
do
    echo $var
done

=> 10
   20
   30

使用read命令,可以從使用者輸入中獲得值並給變數賦值。

程式碼:

echo -n "Enter "var""
read var
echo "The value of var is $var"

<= 100
=> The value of var is 100

5. 總結

  我們已經學習了Bash中有關變數的一些概念和變數的賦值,參照等語法規則。學會了怎麼在一個Bash指令碼中建立一個變數,給變數賦值以及通過echo命令輸出到終端。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-09/135574.htm


IT145.com E-mail:sddin#qq.com