Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

การทำความเข้าใจและการเขียน 'Linux Variables' ใน Shell Scripting – ตอนที่ 10

ภาษาสคริปต์เชลล์ของ Linux เป็นหัวข้อยอดนิยมมาโดยตลอดและจะเป็นต่อไปในอนาคต Shell Scripting Language มีความมหัศจรรย์และง่ายต่อการสร้างโปรแกรมในภาษาสคริปต์เหมือนกับภาษาอื่นๆ อย่างไรก็ตาม มันต้องการความรู้เชิงลึกเกี่ยวกับสิ่งที่เรากำลังทำและสิ่งที่คาดหวังผลลัพธ์

การทำความเข้าใจและการเขียน  Linux Variables  ใน Shell Scripting – ตอนที่ 10

บทความเกี่ยวกับเชลล์สคริปต์ทั้งหมดที่เราเขียนเพื่อผู้อ่านของเราได้รับการชื่นชมอย่างสูง รวมถึงบทความล่าสุด “An Insight of Linux Variables” เรากำลังขยายบทความล่าสุดไปสู่ระดับใหม่

คุณสมบัติของตัวแปร

ตัวแปรแต่ละตัวใน Linux Environment มีตัวเลือกบางอย่าง ซึ่งเรียกว่า 'แอตทริบิวต์' ตัวเลือกหรือแอตทริบิวต์เหล่านี้สามารถ เปิด . ได้ และ ปิด เมื่อจำเป็นตามสถานการณ์โดยใช้คำสั่ง “ประกาศ”

ตัวอย่างของแอตทริบิวต์ตัวแปรใช้สวิตช์พูดว่า '-i ' ซึ่งจะเปิดแอตทริบิวต์จำนวนเต็มสำหรับตัวแปรที่เกี่ยวข้อง แม้ว่าจะผ่านค่าที่ไม่ใช่ตัวเลขเพื่อเปลี่ยน ‘-i ' มันจะไม่โยนข้อความแสดงข้อผิดพลาดและส่งออก '0 ' เป็นการตีความจำนวนเต็ม จากตัวอย่างด้านล่างจะชัดเจนยิ่งขึ้น

ประกาศตัวแปร Integer, bill =121

admin@wsxdn.com:~$ declare -i bill=121

Printf ค่าตัวแปรของบิล

admin@wsxdn.com:~$ printf "%d\n" "$bill" 

121

ให้ค่าตัวแปรเป็นสตริง มีการประกาศบิลค่าตัวแปรแล้ว ไม่จำเป็นต้องประกาศเป็นครั้งที่สอง เพียงเปลี่ยนค่าของตัวแปรเป็น

admin@wsxdn.com:~$ bill=tecmint

ตอนนี้ให้พิมพ์ค่าของบิลตัวแปรอีกครั้ง

admin@wsxdn.com:~$ printf "%d\n" "$bill" 

0

ประกาศ '0 ' แทนที่ข้อความแสดงข้อผิดพลาด

ตอนนี้ คำถามคือ จะทราบแอตทริบิวต์ของตัวแปรที่ประกาศแล้วได้อย่างไร
admin@wsxdn.com:~$ declare -p bill 

declare -i bill="121"

ที่นี่ -p (หมายถึงการพิมพ์) สวิตช์มาช่วย

อีกครั้ง ฉันควรทำอย่างไรเพื่อปิดคุณลักษณะของตัวแปร

เพื่อสลับ ปิด คุณลักษณะของตัวแปรที่เราต้องการทั้งหมดคือการใส่ + (บวก ) ลงชื่อก่อนสวิตช์ จากตัวอย่างด้านล่างจะชัดเจนยิ่งขึ้น

สลับ ปิด แอตทริบิวต์จำนวนเต็มสำหรับตัวแปรข้างต้น

admin@wsxdn.com:~$ declare +i bill

ตรวจสอบค่าของตัวแปร

admin@wsxdn.com:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

ตอนนี้พิมพ์ค่าของตัวแปรโดยใช้สตริงสวิตช์

admin@wsxdn.com:~$ printf "%s\n" "$bill" 

tecmint

ในตัวอย่างข้างต้น bash ไม่สามารถตัดสินค่าที่ไม่ใช่ตัวเลขว่าเป็นข้อผิดพลาด อย่างไรก็ตาม printf คือการตีความ สิ่งที่เป็นตัวเลข และสิ่งที่ไม่สามารถเป็นได้

ตัวแปรแบบอ่านอย่างเดียว

คุณอาจเคยได้ยินหน่วยความจำแบบอ่านอย่างเดียว (ROM ) แต่ตัวแปรแบบอ่านอย่างเดียวคืออะไร มีความคล้ายคลึงกับ ROM หรือไม่

ตัวแปรแบบอ่านอย่างเดียว เช่น หน่วยความจำแบบอ่านอย่างเดียวคือค่าที่ไม่สามารถเปลี่ยนแปลงได้เมื่อถูกกำหนดแล้ว ดังนั้นจึงเรียกว่าอ่านอย่างเดียว คุณไม่สามารถเขียน แก้ไข หรือปรับเปลี่ยนค่าใหม่สำหรับตัวแปรนั้นได้ นี่คือภาพประกอบโดยใช้ตัวอย่าง

Decalre อ่านอย่างเดียว (-r ) ชื่อตัวแปร ซึ่งมีค่าเป็น “Tecmint.com”

admin@wsxdn.com:~$ declare -r name="Tecmint.com"

พิมพ์ค่าของตัวแปรที่ประกาศข้างต้น

admin@wsxdn.com:~$ printf "%s\n" "$name" 

Tecmint.com

ลองเปลี่ยนค่าของตัวแปร

admin@wsxdn.com:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

ตามที่กล่าวไว้ข้างต้น แอตทริบิวต์ของตัวแปรแบบอ่านอย่างเดียวสามารถเปลี่ยนแปลงได้โดยใช้ '+ ' ลงชื่อ

การส่งออกตัวแปรใน Linux

ตัวแปรเชลล์ทั้งหมดที่ประกาศในเชลล์สคริปต์จะใช้งานได้จนกว่าสคริปต์จะทำงาน ภายนอกสคริปต์ไม่มีตัวแปรจากสคริปต์ กระบวนการสร้างตัวแปรนอกสคริปต์เรียกว่าการเอ็กซ์พอร์ตตัวแปร

ตัวแปรสามารถส่งออกนอกเชลล์โดยใช้สวิตช์ declare -x (ส่งออก) ซึ่งรับทราบเชลล์สิ่งที่คุณต้องการส่งออก สวิตช์ประกาศการส่งออกสามารถใช้เป็น.

admin@wsxdn.com:~$ declare -x variable=”Constant_Value”

การเปลี่ยนแปลงทั้งหมดที่ทำกับตัวแปรในขณะที่สคริปต์กำลังทำงานอยู่ จะสูญหายไปเมื่อตัวแปรถูกส่งออกนอกสคริปต์ การส่งออกตัวแปรมีความสำคัญมากในเชลล์สคริปต์

เราต้องการให้มีตัวแปรที่ควรเป็นแบบอ่านอย่างเดียวและพร้อมใช้งานนอกสคริปต์ เราจำเป็นต้องใช้สวิตช์ -r และเปลี่ยน -x ในเวลาเดียวกัน

admin@wsxdn.com:~$ 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 ‘.

ไม่ต้องกังวลว่าตัวแปรเป็นแบบอ่านอย่างเดียว จะกำหนดใหม่ได้อย่างไร คุณจำไม่ได้ว่าการเปลี่ยนแปลงทั้งหมดที่ทำกับตัวแปรในขณะที่สคริปต์กำลังทำงานจะสูญหายไปเมื่อตัวแปรถูกส่งออกนอกสคริปต์"

อ้างอิง

ประกาศ คำสั่งอนุญาตให้ใช้สวิตช์ทั้งหมดด้านล่างพร้อมกับชุดค่าผสม

  1. -a :ประกาศอาร์เรย์
  2. -f :แสดงฟังก์ชันและคำจำกัดความ
  3. -F :แสดงชื่อฟังก์ชัน
  4. -r :ประกาศตัวแปรเป็นแบบอ่านอย่างเดียว
  5. -x :ประกาศตัวแปรว่าส่งออกได้
  6. -ฉัน :ประกาศตัวแปรเป็นจำนวนเต็ม

นั่นคือทั้งหมดที่สำหรับตอนนี้. ในบทความถัดไป เราจะพูดถึงวิธีการแทนที่ตัวแปรโดยใช้ ‘eval ' คำสั่งและตัวแปรที่กำหนดไว้แล้วใน bash ก่อนปิดหัวข้อนี้ หวังว่าผู้คนของคุณจะเพลิดเพลินกับการเดินทางสู่การเขียนสคริปต์เชิงลึกของคุณ คอยติดตามและเชื่อมต่อกับ Tecmint.com .