Linux Shell程式設計(7)——變數賦值

尹成發表於2014-09-30
=
賦值操作符(它的左右兩邊不能有空白符)



不要搞混了=和-eq,-eq是比賦值操作更高階的測試。


注意:等於號(=)根據環境的不同它可能是賦值操作符也可能是一個測試操作符。


例子:簡單的變數賦值


#!/bin/bash
# 裸變數


echo


# 什麼時候變數是“裸”的?比如說,變數名前面沒有$?
#當變數被賦值而不是引用時,我們稱它為是裸變數。


# 賦值
a=879
echo "The value of \"a\" is $a."


# 用命令'let'賦值。
let a=16+5
echo "The value of \"a\" is now $a."


echo


# 在一個for迴圈裡賦值(其實,這是一種偽賦值):
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
do
  echo -n "$a "
done


echo
echo


# 用'read'命令 (這也是一種賦值):
echo -n "Enter \"a\" "
read a
echo "The value of \"a\" is now $a."


echo


exit 0


  
例子簡單且奇特的變數賦值

#!/bin/bash


a=23              # 簡單的情況
echo $a
b=$a
echo $b


# 現在,來一點奇怪的賦值(命令替換)


a=`echo Hello!`   # 把'echo'命令的結果賦值給變數'a'
echo $a
#  注意在一個#+的命令替換結構中包含一個感嘆號(!),
#+ 將不會工作。
#+ 因為感嘆號觸發了Bash"歷史命令機制"
#  不過,在指令碼里,歷史命令機制是被禁用的.


a=`ls -l`         # 把'ls -l'命令的結果賦給變數'a'
echo $a           # 如果沒有引號,則會刪除多餘tab鍵和空白符
echo
echo "$a"         # 加了雙引號,則能夠原樣保留空白符
                  # (參考"引用"章節)


exit 0



變數賦值也可以使用$(...) 機制(它是比斜引號更新的方法). 它實際是命令替換的一種形式.

相關文章