Kabukta $ # ne anlama geliyor?


25

Kabuktaki $#anlamı nedir ?

Gibi kod var

if [ $# -eq 0 ]
then

Bunun ne $#anlama geldiğini anlamak istiyorum , ancak Google araması bu tür şeyleri aramak için çok kötü.


3
Noktalama işaretli aramalar için symbolhound.com adresini kullanmaktan hoşlanıyorum. Genellikle ihtiyacım olanı bulur.
Eric Andres,


Daha iyi referanslar ve SEO için: patlama, sayı işareti , keskin, U + 0023, & # 35 ;, yorum işareti ve dolar!
Clément

Yanıtlar:


37

Her zaman kabuğunun man sayfasını kontrol edebilirsin. man bashdiyor:

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

Bu nedenle, bir kabuk betiği böyle bir kodla kaç tane parametre verildiğini kontrol edebilir:

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

@Hayır Adı da mandahil olmak üzere hemen her şeyi yapabilirsiniz man. Ayrıca aproposbiraz zaman deneyin .
bir CVn

@Hayır, eğer GNU araçlarıyla bir işletim sistemi kullanırken (linux, vb.) info, Ya man sayfası ya da paketler varsa ek bilgiler (çok ayrıntılı ve bölümlendirilmiş) kullanmak için kullanabilirsiniz .
Olivier Dulac

12

Aslında,

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

Yani birlikte

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

Böylece, yaptığınız $#gibi iletilen argümanların / parametrelerin sayısını kontrol etmek ve beklenmeyen durumları ele almak için kullanabilirsiniz.

Benzer şekilde, biz

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

vb.


8

Yani

  1. betiğin çağrıldığı parametre sayısı

  2. betiğin içinde ayarlanmış olan parametre sayısı set -- foo bar

  3. (bir işlev içinde kullanıldığında) bir işlevin çağrıldığı parametre sayısı ( setorada da işe yarar).

Bu, bash adam sayfasında "Özel Parametreler" bloğunda açıklanmıştır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.