Bash 指令稿入門
Alex Scriven
Data Scientist
和其他語言一樣,你可以用等號指派變數。
var1="Moon"
接著用 $ 來參照。
echo $var1
Moon
變數名稱可自訂(但要有意義):
firstname='Cynthia' lastname='Liu'echo "Hi there" $firstname $lastname
Hi there Cynthia Liu
兩個變數都被印出了,不錯!
少了 $ 符號,就不會當成變數!
firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
在 Bash 建立變數時,空白很嚴格。請注意不要加空白!
var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
在 Bash 中,不同引號代表不同含意,無論是在建立變數或輸出時皆然。
'sometext')= Shell 逐字看待其內容"sometext")= 也逐字,但允許使用 $ 與反引號 最後一種會建立「殼中殼」,如下所示。適合呼叫命令列程式。這是用反引號完成的。
來看看不同方式建立變數的效果吧。
now_var='NOW'now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
date 程式很適合用來示範反引號。
此程式的一般輸出:
date
Mon 2 Dec 2019 14:07:10 AEDT
現在用用殼中殼:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
date 被呼叫,輸出被捕捉並和 echo 內容內嵌組合。
我們用了殼中殼!
有一種與反引號等效的寫法:
rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.
兩者效果相同,但反引號較舊。現代多用括號語法。(見 http://mywiki.wooledge.org/BashFAQ/082)
Bash 指令稿入門