$ # หมายถึงอะไรในเชลล์?


25

อะไร$#เฉลี่ยในเปลือก?

ฉันมีรหัสเช่น

if [ $# -eq 0 ]
then

ฉันต้องการเข้าใจความ$#หมาย แต่การค้นหาโดย Google นั้นแย่มากสำหรับการค้นหาสิ่งต่าง ๆ เหล่านี้


3
สำหรับการค้นหาที่มีเครื่องหมายวรรคตอนฉันต้องการใช้ symbolhound.com มักจะพบสิ่งที่ฉันต้องการ
Eric Andres

คุณสามารถเรียกดู คู่มือได้
miracle17

เพื่อการอ้างอิงที่ดีขึ้นและ SEO: bang, number number , sharp, U + 0023, & # 35 ;, ความคิดเห็นและดอลลาร์!
Clément

คำตอบ:


37

คุณสามารถตรวจสอบ man page ของเชลล์ของคุณ man bashพูดว่า:

Special Parameters
   #      Expands to the number of positional parameters in decimal.

ดังนั้นเชลล์สคริปต์สามารถตรวจสอบจำนวนพารามิเตอร์ที่ได้รับด้วยรหัสดังนี้:

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi

@NoName คุณสามารถmanทำอะไรได้เกือบทุกอย่างรวมถึงmanตัวมันเอง ลองอีกaproposสักครั้ง
CVn

@NoName คุณยังสามารถใช้ OS ที่มีเครื่องมือ GNU (linux และอื่น ๆ ) ใช้infoสำหรับ man page หรือข้อมูลเพิ่มเติม (detailled มากและ compartmentalized) ถ้าแพ็คเกจมีบางอย่าง
Olivier Dulac

12

อันที่จริงแล้ว

`$` refer to `value of` and
`#` refer to `number of / total number`

ดังนั้นกัน

`$#` refer to `The value of the total number of command line arguments passed.`

ดังนั้นคุณสามารถใช้$#เพื่อตรวจสอบจำนวนอาร์กิวเมนต์ / พารามิเตอร์ที่ผ่านเหมือนที่คุณทำและจัดการกับสถานการณ์ที่ไม่คาดคิด

ในทำนองเดียวกันเรามี

`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`

เป็นต้น


8

นั่นคือ

  1. จำนวนพารามิเตอร์ที่สคริปต์ถูกเรียกใช้

  2. จำนวนพารามิเตอร์ที่ตั้งค่าไว้ภายในสคริปต์โดย set -- foo bar

  3. (เมื่อใช้ภายในฟังก์ชัน) จำนวนพารามิเตอร์ที่มีการเรียกใช้ฟังก์ชัน ( setจะทำงานที่นั่นด้วย)

นี่คือคำอธิบายในหน้า bash man ในบล็อก "พารามิเตอร์พิเศษ"

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