เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

ตัวแปรและค่าคงที่

อย่างไรก็ตาม สคริปต์ของเรามีปัญหา สังเกตว่าสตริง "System Information Report" ซ้ำกันอย่างไร? ด้วยสคริปต์ขนาดเล็กของเรา มันไม่ใช่ปัญหา แต่ลองนึกดูว่าสคริปต์ของเรายาวจริงๆ และเรามีสตริงนี้หลายอินสแตนซ์ ถ้าเราต้องการเปลี่ยนชื่อเรื่องเป็นอย่างอื่น เราจะต้องเปลี่ยนหลายๆ ตำแหน่งซึ่งอาจเป็นงานที่หนักมาก จะเป็นอย่างไรถ้าเราสามารถจัดเรียงสคริปต์เพื่อให้สตริงปรากฏเพียงครั้งเดียวและไม่ปรากฏหลายครั้ง นั่นจะทำให้การบำรุงรักษาสคริปต์ในอนาคตง่ายขึ้นมาก นี่คือวิธีที่เราทำได้:



#! / bin / ทุบตี


# โปรแกรมออกหน้าข้อมูลระบบ


title="รายงานข้อมูลระบบ"


เสียงสะท้อน "

$ชื่อ

$ชื่อ

"

#! / bin / ทุบตี


# โปรแกรมออกหน้าข้อมูลระบบ


title="รายงานข้อมูลระบบ"


เสียงสะท้อน "

$ชื่อ

$ชื่อ

"


โดยการสร้าง ตัวแปร ชื่อ ชื่อเรื่อง และกำหนดมูลค่า "System Information Report" ให้เราสามารถใช้ประโยชน์จากการขยายพารามิเตอร์และวางสตริงไว้ในหลายตำแหน่ง

แล้วเราจะสร้างตัวแปรได้อย่างไร? ง่ายๆ แค่เราใช้มัน เมื่อเชลล์พบตัวแปร เชลล์จะสร้างมันขึ้นมาโดยอัตโนมัติ ซึ่งแตกต่างจากภาษาโปรแกรมหลายภาษาที่ตัวแปรต้องชัดเจน ประกาศ หรือกำหนดไว้ก่อนใช้งาน เปลือกมีความหละหลวมมากเกี่ยวกับเรื่องนี้ ซึ่งอาจนำไปสู่ปัญหาบางอย่าง ตัวอย่างเช่น ลองพิจารณาสถานการณ์นี้ในบรรทัดคำสั่ง:


[me@linuxbox ~]$ foo="ใช่" [me@linuxbox ~]$ เสียงสะท้อน $foo ใช่

[me@linuxbox ~]$ ก้อง $fool


[me@linuxbox ~]$

[me@linuxbox ~]$ foo="ใช่" [me@linuxbox ~]$ เสียงสะท้อน $foo ใช่

[me@linuxbox ~]$ ก้อง $fool


[me@linuxbox ~]$


ก่อนอื่นเรากำหนดค่า "ใช่" ให้กับตัวแปร fooแล้วแสดงค่าด้วย เสียงสะท้อน. ต่อไปเราแสดงค่าของชื่อตัวแปรที่สะกดผิดว่าเป็น "คนโง่" และรับค่าว่างเปล่าอีกครั้ง ทั้งนี้เป็นเพราะเชลล์สร้างตัวแปรอย่างมีความสุข คนโง่ เมื่อพบมันและให้ค่าเริ่มต้นเป็นไม่มีอะไรหรือว่างเปล่า จากนี้เราเรียนรู้ว่าเราต้องใส่ใจกับการสะกดคำของเรา! สิ่งสำคัญคือต้องเข้าใจสิ่งที่เกิดขึ้นในตัวอย่างนี้ จากการดูก่อนหน้านี้ว่าเชลล์ดำเนินการขยายอย่างไร เรารู้ว่าคำสั่ง:



[me@linuxbox ~]$ echo $foo

[me@linuxbox ~]$ echo $foo


ผ่านการขยายพารามิเตอร์และส่งผลให้:



[me@linuxbox ~]$ ก้องใช่

[me@linuxbox ~]$ ก้องใช่


ในขณะที่คำสั่ง:



[me@linuxbox ~]$ สะท้อน $fool

[me@linuxbox ~]$ สะท้อน $fool


ขยายเป็น:



[me@linuxbox ~]$ เสียงสะท้อน

[me@linuxbox ~]$ เสียงสะท้อน


ตัวแปรว่างขยายเป็นไม่มีอะไร! สิ่งนี้สามารถสร้างความหายนะด้วยคำสั่งที่ต้องใช้อาร์กิวเมนต์ นี่คือตัวอย่าง:



[me@linuxbox ~]$ ฟู=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ ซีพี $foo $fool

cp: ไม่มีตัวถูกดำเนินการของไฟล์ปลายทางหลังจาก `foo.txt'

[me@linuxbox ~]$ ฟู=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ ซีพี $foo $fool

cp: ไม่มีตัวถูกดำเนินการของไฟล์ปลายทางหลังจาก `foo.txt'


ลองใช้ `cp --help' เพื่อดูข้อมูลเพิ่มเติม

ลองใช้ `cp --help' เพื่อดูข้อมูลเพิ่มเติม


เรากำหนดค่าให้กับสองตัวแปร foo และ ฟู1. จากนั้นเราดำเนินการ a cpแต่สะกดชื่ออาร์กิวเมนต์ที่สองผิด หลังจากการขยายตัว cp คำสั่งถูกส่งเพียงหนึ่งอาร์กิวเมนต์ แม้ว่าจะต้องใช้สองอาร์กิวเมนต์

มีกฎเกณฑ์บางประการเกี่ยวกับชื่อตัวแปร:

1. ชื่อตัวแปรอาจประกอบด้วยอักขระที่เป็นตัวอักษรและตัวเลขคละกัน (ตัวอักษรและตัวเลข) และอักขระขีดล่าง

2. อักขระตัวแรกของชื่อตัวแปรต้องเป็นตัวอักษรหรือขีดล่าง

3. ไม่อนุญาตให้เว้นวรรคและเครื่องหมายวรรคตอน

คำว่า "ตัวแปร" หมายถึงค่าที่เปลี่ยนแปลง และในหลาย ๆ แอปพลิเคชัน ตัวแปรจะถูกใช้ในลักษณะนี้ อย่างไรก็ตาม ตัวแปรในแอปพลิเคชันของเรา ชื่อเรื่อง, ใช้เป็น คงที่. ค่าคงที่ก็เหมือนตัวแปรที่มีชื่อและมีค่า ความแตกต่างคือค่าคงที่ไม่เปลี่ยนแปลง ในแอปพลิเคชันที่ทำการคำนวณทางเรขาคณิต เราอาจกำหนด PI เป็นค่าคงที่และกำหนดค่าของ 3.1415แทนที่จะใช้ตัวเลขตามตัวอักษรตลอดโปรแกรมของเรา เชลล์ทำให้ไม่มีความแตกต่างระหว่างตัวแปรและค่าคงที่ ส่วนใหญ่เป็นความสะดวกของโปรแกรมเมอร์ หลักการทั่วไปคือการใช้อักษรตัวพิมพ์ใหญ่เพื่อกำหนดค่าคงที่และตัวพิมพ์เล็กสำหรับตัวแปรจริง เราจะแก้ไขสคริปต์ของเราเพื่อให้เป็นไปตามข้อตกลงนี้:



#! / bin / ทุบตี

# โปรแกรมออกหน้าข้อมูลระบบ TITLE="รายงานข้อมูลระบบ สำหรับ $HOSTNAME"เอคโค่"

$TITLE

$TITLE

"

#! / bin / ทุบตี

# โปรแกรมออกหน้าข้อมูลระบบ TITLE="รายงานข้อมูลระบบ สำหรับ $HOSTNAME"เอคโค่"

$TITLE

$TITLE

"


เรายังใช้โอกาสในการแจ๊สชื่อของเราด้วยการเพิ่มมูลค่าของตัวแปรเชลล์

ชื่อโฮสต์ นี่คือชื่อเครือข่ายของเครื่อง


ภาพ

หมายเหตุ: เชลล์มีวิธีการบังคับใช้ความไม่เปลี่ยนรูปของค่าคงที่ ผ่านการใช้ ประกาศ คำสั่งในตัวด้วย -r (อ่านอย่างเดียว) ตัวเลือก ถ้าเรามอบหมาย TITLE ทางนี้:


ประกาศ -r TITLE="ชื่อหน้า"


เชลล์จะป้องกันไม่ให้มีการมอบหมายให้ TITLE. คุณลักษณะนี้ไม่ค่อยได้ใช้ แต่มีไว้สำหรับสคริปต์ที่เป็นทางการมาก


ภาพ


 

ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: