Unix / Linux - การใช้ตัวแปรเชลล์
ในบทนี้เราจะเรียนรู้วิธีการใช้ตัวแปรเชลล์ใน Unix ตัวแปรคือสตริงอักขระที่เรากำหนดค่า ค่าที่กำหนดอาจเป็นตัวเลขข้อความชื่อไฟล์อุปกรณ์หรือข้อมูลประเภทอื่น ๆ
ตัวแปรไม่มีอะไรมากไปกว่าตัวชี้ไปยังข้อมูลจริง เชลล์ช่วยให้คุณสร้างกำหนดและลบตัวแปรได้
ชื่อตัวแปร
ชื่อของตัวแปรสามารถมีได้เฉพาะตัวอักษร (a ถึง z หรือ A ถึง Z) ตัวเลข (0 ถึง 9) หรืออักขระขีดล่าง (_)
ตามแบบแผนตัวแปรเปลือก Unix จะมีชื่อเป็น UPPERCASE
ตัวอย่างต่อไปนี้เป็นชื่อตัวแปรที่ถูกต้อง -
_ALI
TOKEN_A
VAR_1
VAR_2
ต่อไปนี้เป็นตัวอย่างของชื่อตัวแปรที่ไม่ถูกต้อง -
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!
เหตุผลที่คุณไม่สามารถใช้อักขระอื่นเช่น !, *, หรือ - คืออักขระเหล่านี้มีความหมายพิเศษสำหรับเชลล์
การกำหนดตัวแปร
ตัวแปรถูกกำหนดดังนี้ -
variable_name=variable_value
ตัวอย่างเช่น -
NAME="Zara Ali"
ตัวอย่างข้างต้นกำหนดตัวแปร NAME และกำหนดค่า "Zara Ali" ให้ ตัวแปรประเภทนี้เรียกว่าscalar variables. ตัวแปรสเกลาร์สามารถเก็บได้ครั้งละหนึ่งค่าเท่านั้น
Shell ช่วยให้คุณสามารถจัดเก็บค่าที่คุณต้องการในตัวแปร ตัวอย่างเช่น -
VAR1="Zara Ali"
VAR2=100
การเข้าถึงค่า
ในการเข้าถึงค่าที่เก็บไว้ในตัวแปรให้นำหน้าชื่อด้วยเครื่องหมายดอลลาร์ ($) -
ตัวอย่างเช่นสคริปต์ต่อไปนี้จะเข้าถึงค่าของตัวแปรที่กำหนด NAME และพิมพ์บน STDOUT -
#!/bin/sh
NAME="Zara Ali"
echo $NAME
สคริปต์ด้านบนจะสร้างค่าต่อไปนี้ -
Zara Ali
ตัวแปรอ่านอย่างเดียว
เชลล์มีวิธีทำเครื่องหมายตัวแปรว่าอ่านอย่างเดียวโดยใช้คำสั่งอ่านอย่างเดียว หลังจากที่ตัวแปรถูกทำเครื่องหมายเป็นอ่านอย่างเดียวแล้วจะไม่สามารถเปลี่ยนแปลงค่าได้
ตัวอย่างเช่นสคริปต์ต่อไปนี้สร้างข้อผิดพลาดขณะพยายามเปลี่ยนค่าของ NAME -
#!/bin/sh
NAME="Zara Ali"
readonly NAME
NAME="Qadiri"
สคริปต์ด้านบนจะสร้างผลลัพธ์ต่อไปนี้ -
/bin/sh: NAME: This variable is read only.
การยกเลิกการตั้งค่าตัวแปร
การยกเลิกการตั้งค่าหรือการลบตัวแปรจะทำให้เชลล์ลบตัวแปรออกจากรายการตัวแปรที่ติดตาม เมื่อคุณยกเลิกการตั้งค่าตัวแปรคุณจะไม่สามารถเข้าถึงค่าที่เก็บไว้ในตัวแปรได้
ต่อไปนี้เป็นไวยากรณ์เพื่อยกเลิกการตั้งค่าตัวแปรที่กำหนดโดยใช้ unset คำสั่ง -
unset variable_name
คำสั่งดังกล่าวจะยกเลิกการตั้งค่าของตัวแปรที่กำหนดไว้ นี่คือตัวอย่างง่ายๆที่แสดงให้เห็นว่าคำสั่งทำงานอย่างไร -
#!/bin/sh
NAME="Zara Ali"
unset NAME
echo $NAME
ตัวอย่างข้างต้นไม่พิมพ์อะไรเลย คุณไม่สามารถใช้คำสั่ง unset เพื่อunset ตัวแปรที่ทำเครื่องหมาย readonly.
ประเภทตัวแปร
เมื่อเชลล์ทำงานมีตัวแปรหลักสามประเภท -
Local Variables- ตัวแปรโลคัลคือตัวแปรที่มีอยู่ภายในอินสแตนซ์ปัจจุบันของเชลล์ ไม่สามารถใช้ได้กับโปรแกรมที่เริ่มต้นโดยเชลล์ ตั้งค่าไว้ที่พรอมต์คำสั่ง
Environment Variables- ตัวแปรสภาพแวดล้อมพร้อมใช้งานสำหรับกระบวนการย่อยของเชลล์ บางโปรแกรมต้องการตัวแปรสภาพแวดล้อมเพื่อให้ทำงานได้อย่างถูกต้อง โดยปกติเชลล์สคริปต์จะกำหนดเฉพาะตัวแปรสภาพแวดล้อมที่ต้องการโดยโปรแกรมที่รัน
Shell Variables- ตัวแปรเชลล์เป็นตัวแปรพิเศษที่กำหนดโดยเชลล์และเชลล์ต้องการเพื่อให้ทำงานได้อย่างถูกต้อง ตัวแปรเหล่านี้บางตัวเป็นตัวแปรสภาพแวดล้อมในขณะที่ตัวแปรอื่น ๆ เป็นตัวแปรท้องถิ่น