ภาษาสคริปต์เชลล์ของ Linux เป็นหัวข้อยอดนิยมมาโดยตลอดและจะเป็นต่อไปในอนาคต Shell Scripting Language มีความมหัศจรรย์และง่ายต่อการสร้างโปรแกรมในภาษาสคริปต์เหมือนกับภาษาอื่นๆ อย่างไรก็ตาม มันต้องการความรู้เชิงลึกเกี่ยวกับสิ่งที่เรากำลังทำและสิ่งที่คาดหวังผลลัพธ์
บทความเกี่ยวกับเชลล์สคริปต์ทั้งหมดที่เราเขียนเพื่อผู้อ่านของเราได้รับการชื่นชมอย่างสูง รวมถึงบทความล่าสุด “An Insight of Linux Variables” เรากำลังขยายบทความล่าสุดไปสู่ระดับใหม่
คุณสมบัติของตัวแปร
ตัวแปรแต่ละตัวใน Linux Environment มีตัวเลือกบางอย่าง ซึ่งเรียกว่า 'แอตทริบิวต์' ตัวเลือกหรือแอตทริบิวต์เหล่านี้สามารถ เปิด . ได้ และ ปิด เมื่อจำเป็นตามสถานการณ์โดยใช้คำสั่ง “ประกาศ”
ตัวอย่างของแอตทริบิวต์ตัวแปรใช้สวิตช์พูดว่า '-i ' ซึ่งจะเปิดแอตทริบิวต์จำนวนเต็มสำหรับตัวแปรที่เกี่ยวข้อง แม้ว่าจะผ่านค่าที่ไม่ใช่ตัวเลขเพื่อเปลี่ยน ‘-i ' มันจะไม่โยนข้อความแสดงข้อผิดพลาดและส่งออก '0 ' เป็นการตีความจำนวนเต็ม จากตัวอย่างด้านล่างจะชัดเจนยิ่งขึ้น
ประกาศตัวแปร Integer, bill =121
[email protected]:~$ declare -i bill=121
Printf ค่าตัวแปรของบิล
[email protected]:~$ printf "%d\n" "$bill" 121
ให้ค่าตัวแปรเป็นสตริง มีการประกาศบิลค่าตัวแปรแล้ว ไม่จำเป็นต้องประกาศเป็นครั้งที่สอง เพียงเปลี่ยนค่าของตัวแปรเป็น
[email protected]:~$ bill=tecmint
ตอนนี้ให้พิมพ์ค่าของบิลตัวแปรอีกครั้ง
[email protected]:~$ printf "%d\n" "$bill" 0
ประกาศ '0 ' แทนที่ข้อความแสดงข้อผิดพลาด
ตอนนี้ คำถามคือ จะทราบแอตทริบิวต์ของตัวแปรที่ประกาศแล้วได้อย่างไร
[email protected]:~$ declare -p bill declare -i bill="121"
ที่นี่ -p (หมายถึงการพิมพ์) สวิตช์มาช่วย
อีกครั้ง ฉันควรทำอย่างไรเพื่อปิดคุณลักษณะของตัวแปร
เพื่อสลับ ปิด คุณลักษณะของตัวแปรที่เราต้องการทั้งหมดคือการใส่ + (บวก ) ลงชื่อก่อนสวิตช์ จากตัวอย่างด้านล่างจะชัดเจนยิ่งขึ้น
สลับ ปิด แอตทริบิวต์จำนวนเต็มสำหรับตัวแปรข้างต้น
[email protected]:~$ declare +i bill
ตรวจสอบค่าของตัวแปร
[email protected]:~$ printf "%d\n" "$bill" bash: printf: bill: invalid number 0
ตอนนี้พิมพ์ค่าของตัวแปรโดยใช้สตริงสวิตช์
[email protected]:~$ printf "%s\n" "$bill" tecmint
ในตัวอย่างข้างต้น bash ไม่สามารถตัดสินค่าที่ไม่ใช่ตัวเลขว่าเป็นข้อผิดพลาด อย่างไรก็ตาม printf คือการตีความ สิ่งที่เป็นตัวเลข และสิ่งที่ไม่สามารถเป็นได้
ตัวแปรแบบอ่านอย่างเดียว
คุณอาจเคยได้ยินหน่วยความจำแบบอ่านอย่างเดียว (ROM ) แต่ตัวแปรแบบอ่านอย่างเดียวคืออะไร มีความคล้ายคลึงกับ ROM หรือไม่
ตัวแปรแบบอ่านอย่างเดียว เช่น หน่วยความจำแบบอ่านอย่างเดียวคือค่าที่ไม่สามารถเปลี่ยนแปลงได้เมื่อถูกกำหนดแล้ว ดังนั้นจึงเรียกว่าอ่านอย่างเดียว คุณไม่สามารถเขียน แก้ไข หรือปรับเปลี่ยนค่าใหม่สำหรับตัวแปรนั้นได้ นี่คือภาพประกอบโดยใช้ตัวอย่าง
Decalre อ่านอย่างเดียว (-r ) ชื่อตัวแปร ซึ่งมีค่าเป็น “Tecmint.com”
[email protected]:~$ declare -r name="Tecmint.com"
พิมพ์ค่าของตัวแปรที่ประกาศข้างต้น
[email protected]:~$ printf "%s\n" "$name" Tecmint.com
ลองเปลี่ยนค่าของตัวแปร
[email protected]:~$ declare -r name="Avishek" bash: declare: name: readonly variable
ตามที่กล่าวไว้ข้างต้น แอตทริบิวต์ของตัวแปรแบบอ่านอย่างเดียวสามารถเปลี่ยนแปลงได้โดยใช้ '+ ' ลงชื่อ
การส่งออกตัวแปรใน Linux
ตัวแปรเชลล์ทั้งหมดที่ประกาศในเชลล์สคริปต์จะใช้งานได้จนกว่าสคริปต์จะทำงาน ภายนอกสคริปต์ไม่มีตัวแปรจากสคริปต์ กระบวนการสร้างตัวแปรนอกสคริปต์เรียกว่าการเอ็กซ์พอร์ตตัวแปร
ตัวแปรสามารถส่งออกนอกเชลล์โดยใช้สวิตช์ declare -x (ส่งออก) ซึ่งรับทราบเชลล์สิ่งที่คุณต้องการส่งออก สวิตช์ประกาศการส่งออกสามารถใช้เป็น.
[email protected]:~$ declare -x variable=”Constant_Value”
การเปลี่ยนแปลงทั้งหมดที่ทำกับตัวแปรในขณะที่สคริปต์กำลังทำงานอยู่ จะสูญหายไปเมื่อตัวแปรถูกส่งออกนอกสคริปต์ การส่งออกตัวแปรมีความสำคัญมากในเชลล์สคริปต์
เราต้องการให้มีตัวแปรที่ควรเป็นแบบอ่านอย่างเดียวและพร้อมใช้งานนอกสคริปต์ เราจำเป็นต้องใช้สวิตช์ -r และเปลี่ยน -x ในเวลาเดียวกัน
[email protected]:~$ declare -rx variable=”Constant_Value”
ตัวแปรสภาพแวดล้อม
ตัวแปรที่ใช้ร่วมกันระหว่างโปรแกรมและโปรแกรมที่ดำเนินการ ตัวแปรสภาพแวดล้อมสามารถส่งออกได้ แต่ไม่สามารถกำหนดแอตทริบิวต์ได้
ทำความเข้าใจกับทฤษฎีข้างต้นในทางปฏิบัติ เรามีสองสคริปต์ 0.sh และ 1.sh .
# 0.sh #!/bin/bash declare -rx name=Tecmint bash 0.sh exit 0
และสคริปต์ที่สองก็คือ
# 1.sh #!/bin/bash printf "%s\n" "$name" name=Tecmint.com printf "%s\n" "$name" exit 0
สิ่งที่เกิดขึ้นคือตัวแปร (ชื่อ) ถูกประกาศเป็นอ่านอย่างเดียวและส่งออกและทันทีหลังจากเรียกสคริปต์ที่สองนั้น
สคริปต์ที่สองเพิ่งพิมพ์ตัวแปรจากสคริปต์แรกที่ส่งออกใน printf . ตัวแรก คำแถลง. ในคำสั่ง printf ที่สอง จะแสดงค่าใหม่ที่กำหนดให้กับตัวแปร ‘name ‘.
ไม่ต้องกังวลว่าตัวแปรเป็นแบบอ่านอย่างเดียว จะกำหนดใหม่ได้อย่างไร คุณจำไม่ได้ว่าการเปลี่ยนแปลงทั้งหมดที่ทำกับตัวแปรในขณะที่สคริปต์กำลังทำงานจะสูญหายไปเมื่อตัวแปรถูกส่งออกนอกสคริปต์"
อ้างอิง
ประกาศ คำสั่งอนุญาตให้ใช้สวิตช์ทั้งหมดด้านล่างพร้อมกับชุดค่าผสม
- -a :ประกาศอาร์เรย์
- -f :แสดงฟังก์ชันและคำจำกัดความ
- -F :แสดงชื่อฟังก์ชัน
- -r :ประกาศตัวแปรเป็นแบบอ่านอย่างเดียว
- -x :ประกาศตัวแปรว่าส่งออกได้
- -ฉัน :ประกาศตัวแปรเป็นจำนวนเต็ม
นั่นคือทั้งหมดที่สำหรับตอนนี้. ในบทความถัดไป เราจะพูดถึงวิธีการแทนที่ตัวแปรโดยใช้ ‘eval ' คำสั่งและตัวแปรที่กำหนดไว้แล้วใน bash ก่อนปิดหัวข้อนี้ หวังว่าผู้คนของคุณจะเพลิดเพลินกับการเดินทางสู่การเขียนสคริปต์เชิงลึกของคุณ คอยติดตามและเชื่อมต่อกับ Tecmint.com .