ฉันทำecho $1
มันพิมพ์สิ่งที่เป็นเปลือกเข้าสู่ระบบเริ่มต้นที่ใช้
แต่สำหรับecho $2
ต่อไปทั้งหมดที่ฉันได้รับคือบรรทัด ทำไมถึงเป็นอย่างนั้น?
ฉันทำecho $1
มันพิมพ์สิ่งที่เป็นเปลือกเข้าสู่ระบบเริ่มต้นที่ใช้
แต่สำหรับecho $2
ต่อไปทั้งหมดที่ฉันได้รับคือบรรทัด ทำไมถึงเป็นอย่างนั้น?
คำตอบ:
$ 1 (หรือ $ 2, $ 3 ... ) ควรเป็นอาร์กิวเมนต์ที่กำหนดให้กับสคริปต์บางตัว
นี่คือตัวอย่างสคริปต์:
#!/bin/bash
echo "\$1 is now $1"
echo "\$2 is now $2"
echo "\$3 is now $3"
และตัวอย่างผลลัพธ์
jaba@lappy:/tmp$ ./example.sh
$1 is now
$2 is now
$3 is now
jaba@lappy:/tmp$ ./example.sh 1 2 3
$1 is now 1
$2 is now 2
$3 is now 3
$ 1คืออาร์กิวเมนต์ที่ส่งผ่านไปสำหรับเชลล์สคริปต์
สมมติว่าคุณทำงาน
./myscript.sh hello 123
แล้วก็
$ 1จะสวัสดี
$ 2จะเท่ากับ123
ในกรณีของคุณ $ 1 พิมพ์เปลือกเข้าสู่ระบบเริ่มต้นที่ใช้เพราะอาร์กิวเมนต์นี้ถูกส่งผ่านไปยังสคริปต์ที่ใช้เปลือกเข้าสู่ระบบของคุณ แต่ถ้าคุณจะเขียนและเรียกใช้สคริปต์ของคุณเองในเซสชันปัจจุบัน $ 1, $ 2, ... จะเป็นพารามิเตอร์ที่คุณส่งไปยังสคริปต์ของคุณ