461 瀏覽數

Bash Shell Script – $() , ${} , $(())

測試環境為 Ubuntu 16.04 x64

$() , ${} , $(()) 這兩個的差別是??

$()

( ) 代表 子 shell 的起始與結束.
$ 表示變數字元.
$(指令) 代表運行命令並將其輸出 (process substitution) ,與 `指令` 是相同的用法.

直接執行指令

root@ubuntu:~# uname -r
4.4.0-75-generic

也可以透過 $(指令)

root@ubuntu:~# version=$(uname -r)
root@ubuntu:~# echo $version
4.4.0-75-generic

也可以直接透過 echo 輸出.

root@ubuntu:~# echo $(uname -r)
4.4.0-75-generic

反單引號( ` ) 是一樣的效果.

root@ubuntu:~# version=`uname -r`
root@ubuntu:~# echo $version
4.4.0-75-generic

${}

$ 同 ${ } 都是表示變數字元.

root@ubuntu:~# version="4.4.0-75-generic"
root@ubuntu:~# echo $version
4.4.0-75-generic
root@ubuntu:~# echo ${version}
4.4.0-75-generic

一般常用 ${ } ,還可以幫 變數做 刪除/取代 字串 http://benjr.tw/96951 與 測試 , 替換 http://benjr.tw/96998 等功能.

$(())

$((計算式))) 主要是用於計算式的.

root@ubuntu:~# echo $((14*6))
84

運算只限於整數,有小數點的不能用這個方式來運算.

root@ubuntu:~# echo $((14.3*6))
-su: 14.3*6: syntax error: invalid arithmetic operator (error token is ".3*6")

需要透過 bc (計算機) 來做.

root@ubuntu:~# echo {14.3*6} |bc
85.8
root@ubuntu:~# echo "14.3*6" |bc
85.8

發表迴響