Bash Scripting เบื้องต้น
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") = Shell ตีความตรงตัว ยกเว้น $ และ backticks วิธีสุดท้ายสร้าง 'shell ซ้อน shell' ดังที่อธิบายด้านล่าง มีประโยชน์สำหรับเรียกโปรแกรม command-line โดยใช้ backticks
ลองดูผลของการสร้างตัวแปรด้วยวิธีต่างกัน
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 จะช่วยสาธิตการใช้ backticks
ผลลัพธ์ปกติของโปรแกรมนี้:
date
Mon 2 Dec 2019 14:07:10 AEDT
ลองใช้ shell ซ้อน shell กัน:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
โปรแกรม date ถูกเรียก ดึงผลลัพธ์ และนำมารวมกับคำสั่ง echo ในบรรทัดเดียว
นี่คือการใช้ shell ซ้อน shell!
มีรูปแบบที่ใช้แทน backtick notation ได้:
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.
ทั้งสองวิธีให้ผลเหมือนกัน แต่ backticks เป็นรูปแบบเก่า ส่วน parentheses นิยมใช้ในแอปพลิเคชันสมัยใหม่มากกว่า (ดูเพิ่มเติมที่ http://mywiki.wooledge.org/BashFAQ/082)
Bash Scripting เบื้องต้น