บนเชลล์ Linux, echo $ 1 ควรทำอะไร?


11

ฉันทำecho $1มันพิมพ์สิ่งที่เป็นเปลือกเข้าสู่ระบบเริ่มต้นที่ใช้

แต่สำหรับecho $2ต่อไปทั้งหมดที่ฉันได้รับคือบรรทัด ทำไมถึงเป็นอย่างนั้น?

คำตอบ:


21

$ 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
และ $ 0 คือชื่อของสคริปที่กำลังดำเนินการคล้ายกับ argv
Benjamin Bannier

4

$ 1คืออาร์กิวเมนต์ที่ส่งผ่านไปสำหรับเชลล์สคริปต์

สมมติว่าคุณทำงาน

./myscript.sh hello 123 

แล้วก็

$ 1จะสวัสดี

$ 2จะเท่ากับ123


3

ในกรณีของคุณ $ 1 พิมพ์เปลือกเข้าสู่ระบบเริ่มต้นที่ใช้เพราะอาร์กิวเมนต์นี้ถูกส่งผ่านไปยังสคริปต์ที่ใช้เปลือกเข้าสู่ระบบของคุณ แต่ถ้าคุณจะเขียนและเรียกใช้สคริปต์ของคุณเองในเซสชันปัจจุบัน $ 1, $ 2, ... จะเป็นพารามิเตอร์ที่คุณส่งไปยังสคริปต์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.