Bash ให้คุณจับคู่ข้อความทั้งสตริงกับตัวแปรเดียว ทำให้การใช้งานและการเขียนสคริปต์ง่ายขึ้น มันทำงานอย่างไรและคุณจะใช้มันอย่างไร? มาหาคำตอบกัน
ตัวแปรคืออะไร
ตัวแปรคือชื่อที่จำง่ายซึ่งสามารถมีค่าตัวอักษรและตัวเลขต่างกันได้ มีประโยชน์เพราะอนุญาตให้ใช้ฟังก์ชันเดียวกันกับค่าต่างๆ ได้โดยไม่ต้องเขียนสคริปต์/โค้ดใหม่ นอกจากนี้ยังทำให้การเขียนสคริปต์/ชิ้นส่วนของโค้ดเป็นเรื่องง่าย เนื่องจากแทนที่จะจัดการกับค่าแต่ละรายการ คุณสามารถใช้ชื่อเดียวกันสำหรับค่าทั้งหมดได้
ตัวแปรเรียลไทม์
Bash อนุญาตให้ใช้ตัวแปรได้ คุณสามารถสร้างตัวแปรได้ทันทีและนำมาใช้ใหม่ระหว่างเซสชัน Bash ปัจจุบันของคุณ สิ่งเหล่านี้สามารถช่วยคุณใช้ Bash ได้หลายวิธี และจะหายไปหลังจากเซสชันปัจจุบันสิ้นสุดลง
ตัวอย่างเช่น สมมติว่าคุณกำลังเข้าชมเว็บไซต์จำนวนมาก คุณอาจจะทำวิจัยหรือขูดข้อมูล คุณสามารถสร้างตัวแปรต่อไปนี้:
sitea=https://www.maketecheasier.com
หลังจากนั้น หากคุณต้องการเยี่ยมชมไซต์ของเราด้วย Firefox คุณสามารถพิมพ์:
firefox $sitea
ง่ายกว่ามาก - และอ่านง่ายขึ้น $sitea
ตัวแปรจะยังคงจับคู่กับไซต์จนกว่าคุณจะเปลี่ยนเนื้อหาด้วยตนเองหรือสิ้นสุดเซสชัน Bash และแน่นอน คุณสามารถสร้างตัวแปรเพิ่มเติม เช่น siteb
, sitec
และ sited
.
เมื่อตั้งค่าตัวแปรใหม่ คุณสามารถใช้ชื่อใดก็ได้ที่คุณต้องการและจัดเก็บสตริงที่เป็นตัวอักษรและตัวเลขคละกันไว้ข้างใน อย่างไรก็ตาม โปรดทราบว่าโดยค่าเริ่มต้นจะเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้น $sitea
จะไม่เหมือนกับ $SiteA
. นอกจากนี้ โปรดทราบว่าคุณควรใช้เครื่องหมายคำพูดเมื่อจัดเก็บสตริงที่มีอักขระพิเศษอยู่ภายใน (รวมถึงการเว้นวรรค)
ตัวแปรในสคริปต์
ตัวแปรใน Bash มีประโยชน์มากกว่าเมื่อเขียนสคริปต์ เนื่องจากอนุญาตให้คุณเขียนสคริปต์เดียว ซึ่งสามารถทำซ้ำผ่านสตริงต่างๆ หรือดำเนินการกับข้อมูลที่กำหนดเองได้ สมมติว่าคุณกำลังเขียนสคริปต์ที่ทุกคนสามารถใช้บนคอมพิวเตอร์ได้ แต่ในแต่ละครั้งจะแสดงคำทักทายในแบบของคุณ หากไม่มีตัวแปร คุณจะต้องเขียนสคริปต์เวอร์ชันอื่นสำหรับผู้ใช้แต่ละคน ด้วยตัวแปร คุณจะคงสคริปต์ไว้เหมือนเดิมและเปลี่ยนชื่อของผู้ใช้เท่านั้น
สคริปต์ดังกล่าวจะมีลักษณะดังนี้:
#!/bin/bash username=Odysseas echo $username
ตัวอย่างข้างต้นอาจดูเหมือนซ้ำซาก อย่างไรก็ตาม เมื่อความซับซ้อนของโค้ดเพิ่มขึ้น ตัวแปรจะกลายเป็นสิ่งที่ขาดไม่ได้ สคริปต์อาจมีความยาวหลายร้อยหรือหลายพันบรรทัดและมีชื่อผู้ใช้อยู่ในจุดต่างๆ เพื่อให้เข้าใจมากขึ้น ให้พิจารณาสคริปต์ที่แตกต่างออกไปเล็กน้อยต่อไปนี้:
#!/bin/bash username=Linus echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
สคริปต์ข้างต้นจะใช้ชื่อที่กำหนดเป็น username
ตัวแปรเพื่อทำให้ข้อความสมบูรณ์ หากใช้ชื่อผู้ใช้จริง คุณต้องพิมพ์สี่ครั้ง จากนั้นทำเช่นเดียวกันสำหรับผู้ใช้รายถัดไป และอีกสี่ครั้งสำหรับครั้งต่อไป ครั้งแล้วครั้งเล่า. โดยการกำหนดให้กับตัวแปร คุณจะต้องเปลี่ยนเพียงครั้งเดียวสำหรับผู้ใช้แต่ละราย และการกล่าวถึงชื่อผู้ใช้ในข้อความทุกครั้งจะได้รับการอัปเดต
ตัวแปรและนามแฝงของ Bash ถาวร
เราเห็นว่าคุณสามารถตั้งค่าตัวแปรชั่วคราวได้อย่างไร และคุณสามารถรวมตัวแปรเหล่านี้ไว้ในสคริปต์ของคุณเองได้อย่างไร เป็นไปได้ไหมที่จะตั้งค่าตัวแปรอย่างถาวรใน Bash? คำตอบคือ "ใช่!" ที่ยิ่งใหญ่ และคุณต้องแก้ไขไฟล์เดียวเท่านั้น:“~/.bashrc”.
เปิดไฟล์ “~/.bashrc” ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ เนื่องจากฉันชอบนาโน ฉันจึงใช้:
nano ~/.bashrc
เราขอแนะนำให้คุณเริ่มต้นด้วยการทดสอบโดยเพิ่มตัวแปรเพียงตัวเดียว เพื่อที่คุณจะได้รู้ว่าต้องดูที่ไหนหากกระบวนการนี้ใช้ไม่ได้ผล ย้ายไปที่ท้ายไฟล์และเพิ่มตัวแปรในบรรทัดใหม่ ตัวอย่างเช่น ฉันตั้งค่าตัวแปรสำหรับชื่อของฉันเป็น:
myname="Odysseas Kourafalos"
บันทึกไฟล์ของคุณและออกจากตัวแก้ไข การปรับแต่งจะไม่มีผลทันที ป้อนข้อมูลต่อไปนี้ในเทอร์มินัลของคุณเพื่อให้มีผล:
source ~/.bashrc
ตอนนี้คุณสามารถใช้ประโยชน์จากตัวแปรที่ตั้งค่าใหม่ในเซสชัน Bash ของคุณ:
echo $myname
คุณสามารถตั้งค่าตัวแปรได้มากเท่าที่คุณต้องการและทำให้การผจญภัยในแต่ละวันของคุณใน Bash ง่ายขึ้นมาก
สำหรับการเพิ่มประสิทธิภาพการทำงานเป็นพิเศษ ก็ยังคุ้มค่าที่จะตั้งค่าตัวแปรประเภทอื่น:ชื่อแทน ต่างจากตัวแปรทั่วไปซึ่งถูกแมปกับข้อมูลที่คุณสามารถใช้ในคำสั่ง นามแฝงจะถูกใช้แทนคำสั่งจริง
เช่นเดียวกับที่คุณสามารถใช้ตัวแปรที่จำง่ายเพื่อเก็บสตริงข้อความยาวๆ คุณสามารถใช้นามแฝงเป็นทางเลือกที่ง่ายสำหรับคำสั่งที่ซับซ้อน คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ได้ที่นี่ ซึ่งเราจะเปลี่ยนคำสั่งบีบอัด 7zip ทั้งหมดให้เป็นนามแฝงสองอักขระ
หมายเหตุสุดท้าย แม้ว่าคุณจะตั้งค่าตัวแปรใน .bashrc อย่างถาวร คุณยังสามารถกำหนดค่าอื่นให้กับตัวแปรได้ชั่วคราวดังที่เราเห็นก่อนหน้านี้ ตัวแปรจะแสดงเนื้อหาใหม่จนกว่าเซสชัน Bash ปัจจุบันจะสิ้นสุดลง (หลังจากออกจากระบบหรือรีสตาร์ท) หรือคุณรีซอร์สไฟล์ .bashrc