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- ตัวแปรเชลล์เป็นตัวแปรพิเศษที่กำหนดโดยเชลล์และเชลล์ต้องการเพื่อให้ทำงานได้อย่างถูกต้อง ตัวแปรเหล่านี้บางตัวเป็นตัวแปรสภาพแวดล้อมในขณะที่ตัวแปรอื่น ๆ เป็นตัวแปรท้องถิ่น