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

การแทนที่ตัวแปรซ้อนและตัวแปร BASH ที่กำหนดไว้ล่วงหน้าใน Linux – ตอนที่ 11

สองบทความสุดท้ายเกี่ยวกับ BASH Shell ที่เราพูดถึงรายละเอียดตัวแปรได้รับการชื่นชมอย่างสูงจากผู้อ่านของเรา พวกเราในฐานะTecmint-Team มีความกระตือรือร้นอย่างยิ่งที่จะให้หัวข้อล่าสุด ทันสมัย ​​และเกี่ยวข้องซึ่งครอบคลุมรายละเอียดแก่คุณ นอกจากนี้เรายังพยายามเข้าถึงมุมมองที่สำคัญของหัวข้อที่เกี่ยวข้องเสมอ

การแทนที่ตัวแปรซ้อนและตัวแปร BASH ที่กำหนดไว้ล่วงหน้าใน Linux – ตอนที่ 11

นี่คือบทความสุดท้ายเกี่ยวกับ Linux Variables ที่เราจะไปดูการแทนที่ตัวแปรและตัวแปรที่กำหนดไว้ใน Shell ก่อนปิดหัวข้อนี้

Bash ทำการแทนที่ตัวแปรก่อนที่คำสั่งจะถูกดำเนินการจริงๆ Linux Bash Shell ค้นหาเครื่องหมาย '$' ทั้งหมดก่อนดำเนินการคำสั่งและแทนที่ด้วยค่าของตัวแปร กระบวนการแทนที่ Bash Variable ดำเนินการเพียงครั้งเดียว ถ้าเรามีตัวแปรซ้อนกันล่ะ

หมายเหตุ :โดยตัวแปรที่ซ้อนกัน เราหมายถึง ตัวแปรที่ประกาศภายในตัวแปร ให้ดูสถานการณ์ข้างต้นในตัวอย่างด้านล่าง

ประกาศตัวแปรแบบอ่านอย่างเดียวและปฏิบัติการได้ดังนี้

[email protected]:~$ declare -rx Linux_best_website="www.tecmint.com"

ตรวจสอบค่าของตัวแปรที่เก็บไว้

[email protected]:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

ตอนนี้ประกาศตัวแปรอื่นซึ่งอีกครั้งเป็นแบบอ่านอย่างเดียวและปฏิบัติการได้

[email protected]:~$ declare -rx Linux_website="Linux_best_website"

ตอนนี้สถานการณ์คือ เราได้กำหนดสองตัวแปรแล้ว

'Linux_best_website' ซึ่งมีค่าเท่ากับ “www.tecmint.com”
และ 'Linux_website' ซึ่งค่าของมันคือ “Linux_best_website”

จะเกิดอะไรขึ้นหากเราเรียกใช้คำสั่งบรรทัดเดียวด้านล่าง

[email protected]:~$ printf "%s" "$Linux_website"

ก่อนอื่นควรแทนที่ตัวแปร ‘$Linux_website ' ด้วยค่า “Linux_best_website ” แล้วตามด้วย “$Linux_best_website ” เป็นตัวแปรอีกค่าหนึ่งซึ่งก็คือ “www.tecmint.com ” ดังนั้นผลลัพธ์สุดท้ายของการรันคำสั่งด้านล่างควรเป็น

[email protected]:~$ printf "%s" "$Linux_website" 

www.tecmint.com

แต่น่าเสียดาย นี่ไม่ใช่สถานการณ์ ผลลัพธ์ที่เราได้รับคือ Linux_best_website .

เหตุผล? ได้! Bash แทนที่ค่าของตัวแปรเพียงครั้งเดียว แล้วสคริปต์และโปรแกรมที่ซับซ้อนซึ่งเราจำเป็นต้องแทนที่ตัวแปรบ่อยครั้งและจำเป็นต้องแทนที่ตัวแปรมากกว่าหนึ่งครั้งล่ะ

นี่คือคำสั่ง 'eval ' ซึ่งทำงานเพิ่มเติมของการแทนที่ตัวแปรมากกว่าหนึ่งครั้งในสคริปต์ นี่คือตัวอย่างที่จะทำให้การทำงานทั้งหมดมีความใสดุจกระจก

ประกาศตัวแปร x ซึ่งมีค่าเท่ากับ 10 .

[email protected]:~/Desktop$ declare x=10

ตรวจสอบค่าตัวแปร x เราเพิ่งกำหนด

[email protected]:~/Desktop$ echo $yx

x10

ประกาศตัวแปร y ซึ่งมีค่าเท่ากับ x .

[email protected]:~/Desktop$ declare y=x

ตรวจสอบค่าตัวแปร y เราเพิ่งกำหนด

[email protected]:~/Desktop$ echo $y 

x

นี่คือปัญหาของ BASH การแทนที่ตัวแปรแบบครั้งเดียว ซึ่งไม่ทำการแทนที่ตัวแปรรอบพิเศษ เรากำลังใช้ 'eval ' คำสั่งให้แก้ไขปัญหานี้

[email protected]:~/Desktop$ eval y=$x

ตอนนี้ตรวจสอบค่าของตัวแปร 'y '.

[email protected]:~/Desktop$ echo $y 

10

เย่! ปัญหาได้รับการแก้ไขแล้วและ 'ประเมิน ' คำสั่งชนะการแข่งขัน :)

ไม่ต้องพูดถึง ‘ประเมิน ' คำสั่งมีประโยชน์มากในโปรแกรมสคริปต์ขนาดใหญ่และเป็นเครื่องมือที่มีประโยชน์มาก

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

ไม่ ตัวแปรทุบตี ผลลัพธ์
1 auto_resume ประมวลผลคำสั่งให้เสร็จสิ้นสำหรับงานที่หยุด
2 ทุบตี เส้นทางของเชลล์
3 BASH_ENV แสดงชื่อไฟล์โปรไฟล์
4 BASH_VERSION แสดงเวอร์ชันของ Bash
5 BASH_VERSINFO แสดงข้อมูลรุ่นโดยละเอียด
6 BASH_VERSINFO[0] หมายเลขเวอร์ชันหลัก (รุ่น)
7 BASH_VERSINFO[1] หมายเลขเวอร์ชันรอง (เวอร์ชัน)
8 BASH_VERSINFO[2] ระดับแพตช์
9 BASH_VERSINFO[3] เวอร์ชันบิลด์
10 BASH_VERSINFO[4] สถานะการเปิดตัว (เช่น beta1 )
11 BASH_VERSINFO[5] ค่าของ MACHTYPE .
12 CDPATH รายการไดเร็กทอรีคั่นด้วยเครื่องหมายทวิภาค
13 คอลัมน์ จำนวนอักขระต่อบรรทัดในเอาต์พุตมาตรฐาน
14 EUID ID ผู้ใช้ของผู้ใช้ปัจจุบัน
15 FCEDIT ตัวแก้ไขข้อความเริ่มต้นสำหรับคำสั่ง fc
16 FUNCNAME ชื่อความสนุก
17 กลุ่ม กลุ่มที่ผู้ใช้เป็นสมาชิก
18 HISTFILE ไฟล์ที่มีประวัติคำสั่ง
19 หน้าแรก ชื่อของโฮมไดเร็กทอรีของคุณ
20 เส้น จำนวนเส้นแนวนอนบนเอาต์พุตมาตรฐาน
21 จดหมาย ชื่อของไฟล์ที่จะตรวจสอบอีเมลขาเข้า
22 OSTYPE ชื่อระบบปฏิบัติการ
23 OLDPWD ไดเร็กทอรีการทำงานก่อนหน้า
24 PWD ไดเร็กทอรีการทำงานปัจจุบัน
25 สุ่ม พิมพ์ตัวเลขสุ่ม
26 เชลล์ เชลล์ที่ต้องการใช้
27 รูปแบบเวลา รูปแบบคำสั่งเวลา
28 UID ID ของผู้ใช้ปัจจุบัน

มีรายการ BASH Variable ที่กำหนดไว้ล่วงหน้าจำนวนมาก เราได้พยายามจัดทำรายการที่ใช้บ่อยที่สุด

นั่นคือทั้งหมดที่สำหรับตอนนี้. ฉันจะมาที่นี่อีกครั้งพร้อมกับบทความที่น่าสนใจอื่น คอยติดตามและเชื่อมต่อกับ TecMint . อย่าลืมให้ข้อเสนอแนะที่มีค่าของคุณในส่วนความคิดเห็นด้านล่าง