歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Bash簡明教程--變量

Bash簡明教程--變量

日期:2017/2/28 13:48:27   编辑:Linux教程

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命令輸出到終端。

Copyright © Linux教程網 All Rights Reserved