1. 程式人生 > >Linux Shell Bash 變數賦值中"$()"的作用

Linux Shell Bash 變數賦值中"$()"的作用

轉載:http://www.360doc.com/content/10/0303/16/155970_17438894.shtml


例子 4-2. 簡單的變數賦值

  1 #!/bin/bash
  2 # "裸體"變數
  3 
  4 echo
  5 
  6 # 變數什麼時候是"裸體"的, 比如前邊少了$的時候?
  7 # 當它被賦值的時候, 而不是被引用的時候.
  8 
  9 # 賦值
 10 a=879
 11 echo "The value of \"a\" is $a."
 12 
 13 # 使用'let'賦值
 14 let a=16+5
 15 echo "The value of \"a\" is now $a."
 16 
 17 echo
 18 
 19 # 在'for'迴圈中(事實上, 這是一種偽賦值):
 20 echo -n "Values of \"a\" in the loop are: "
 21 for a in 7 8 9 11
 22 do
 23   echo -n "$a "
 24 done
 25 
 26 echo
 27 echo
 28 
 29 # 使用'read'命令進行賦值(這也是一種賦值的型別):
 30 echo -n "Enter \"a\" "
 31 read a
 32 echo "The value of \"a\" is now $a."
 33 
 34 echo
 35 
 36 exit 0

例子 4-3. 簡單和複雜, 兩種型別的變數賦值

  1 #!/bin/bash
  2 
  3 a=23              # 簡單的賦值
  4 echo $a
  5 b=$a
  6 echo $b
  7 
  8 # 現在讓我們來點小變化(命令替換).
  9 
 10 a=`echo Hello!`   # 把'echo'命令的結果傳給變數'a'
 11 echo $a
 12 #  注意, 如果在一個#+的命令替換結構中包含一個(!)的話, 
 13 #+ 那麼在命令列下將無法工作.
 14 #+ 因為這觸發了Bash的"歷史機制."
 15 #  但是, 在指令碼中使用的話, 歷史功能是被禁用的, 所以就能夠正常的執行.
 16 
 17 a=`ls -l`         # 把'ls -l'的結果賦值給'a'
 18 echo $a           # 然而, 如果沒有引號的話將會刪除ls結果中多餘的tab和換行符.
 19 echo
 20 echo "$a"         # 如果加上引號的話, 那麼就會保留ls結果中的空白符.
 21                   # (具體請參閱"引用"的相關章節.)
 22 
 23 exit 0

使用$(...)機制來進行變數賦值(這是一種比後置引用(反引號`)更新的一種方法).事實上這兩種方法都是命令替換的一種形式.

  1 # From /etc/rc.d/rc.local
  2 R=$(cat /etc/redhat-release)
  3 arch=$(uname -m)