Apa arti $ # dalam shell?


25

Apa yang dimaksud $#dengan shell?

Saya punya kode seperti

if [ $# -eq 0 ]
then

Saya ingin mengerti apa $#artinya, tetapi pencarian Google sangat buruk untuk mencari hal-hal semacam ini.


3
Untuk pencarian dengan tanda baca, saya suka menggunakan symbolhound.com. Biasanya menemukan apa yang saya butuhkan.
Eric Andres

Anda dapat menelusuri manual
miracle173

Untuk referensi dan SEO yang lebih baik: bang, tanda angka , tajam, U + 0023, & # 35 ;, tanda komentar, dan dolar!
Clément

Jawaban:


37

Anda selalu dapat memeriksa halaman manual shell Anda. man bashmengatakan:

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

Karenanya skrip shell dapat memeriksa berapa banyak parameter yang diberikan dengan kode seperti ini:

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

@NoName Anda manhampir bisa apa saja, termasuk mandirinya sendiri. Coba juga aproposbeberapa saat.
CVn

@NoName Anda juga dapat, ketika menggunakan OS dengan alat GNU (linux, dll) gunakan infountuk halaman manual, atau informasi tambahan (sangat terperinci, dan terkotak) jika paket memiliki beberapa
Olivier Dulac

12

Sebenarnya,

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

Jadi bersama

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

Dengan demikian, Anda dapat menggunakan $#untuk memeriksa jumlah argumen / parameter yang diteruskan seperti yang Anda lakukan dan menangani situasi yang tidak terduga.

Begitu pula yang kita miliki

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

dll.


8

Itu adalah

  1. jumlah parameter yang dengannya skrip dipanggil

  2. jumlah parameter yang telah ditetapkan dalam skrip oleh set -- foo bar

  3. (ketika digunakan dalam suatu fungsi) jumlah parameter yang digunakan fungsi ( setakan bekerja di sana juga).

Ini dijelaskan di halaman manual bash di blok "Parameter Khusus".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.