ตัวแปรพื้นฐานใน Bash

Bash Scripting เบื้องต้น

Alex Scriven

Data Scientist

การกำหนดตัวแปร

เช่นเดียวกับภาษาอื่น สามารถกำหนดตัวแปรด้วยเครื่องหมาย = ได้เลย

var1="Moon"

จากนั้นอ้างอิงค่าด้วยสัญลักษณ์ $

echo $var1
Moon
Bash Scripting เบื้องต้น

การกำหนดตัวแปรประเภท string

ตั้งชื่อตัวแปรได้ตามต้องการ (ควรให้มีความหมาย!)

firstname='Cynthia'
lastname='Liu'

echo "Hi there" $firstname $lastname
Hi there Cynthia Liu

ทั้งสองตัวแปรถูกแสดงผลได้ถูกต้อง!

Bash Scripting เบื้องต้น

ลืมใส่สัญลักษณ์ $

หากลืมใส่ $ — จะไม่ถูกแปลงเป็นตัวแปร!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bash Scripting เบื้องต้น

(ไม่ใช่) การกำหนดตัวแปร

Bash ไม่ยืดหยุ่นเรื่องช่องว่างในการสร้างตัวแปร ระวังอย่าเว้นวรรค!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Bash Scripting เบื้องต้น

Single, double และ backticks

ใน Bash การใช้เครื่องหมายคำพูดต่างประเภทให้ผลต่างกัน ทั้งตอนสร้างตัวแปรและตอนแสดงผล

  • Single quotes ('sometext') = Shell ตีความตรงตัวทุกอักขระ
  • Double quotes ("sometext") = Shell ตีความตรงตัว ยกเว้น $ และ backticks

วิธีสุดท้ายสร้าง 'shell ซ้อน shell' ดังที่อธิบายด้านล่าง มีประโยชน์สำหรับเรียกโปรแกรม command-line โดยใช้ backticks

  • Backticks (`sometext`) = Shell รันคำสั่งและดึง STDOUT กลับมาเก็บในตัวแปร
Bash Scripting เบื้องต้น

การสร้างตัวแปรแบบต่างๆ

ลองดูผลของการสร้างตัวแปรด้วยวิธีต่างกัน

now_var='NOW'

now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Bash Scripting เบื้องต้น

โปรแกรม date

โปรแกรม Date จะช่วยสาธิตการใช้ backticks

ผลลัพธ์ปกติของโปรแกรมนี้:

date
Mon  2 Dec 2019 14:07:10 AEDT
Bash Scripting เบื้องต้น

Shell ซ้อน shell

ลองใช้ 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!

Bash Scripting เบื้องต้น

Parentheses vs backticks

มีรูปแบบที่ใช้แทน 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 เบื้องต้น

มาฝึกกันเถอะ!

Bash Scripting เบื้องต้น

Preparing Video For Download...