Linux Shell Bash 變數賦值中"$()"的作用
阿新 • • 發佈:2019-02-07
轉載: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)