Co oznacza $ # w powłoce?


25

Co $#znaczy w skorupce?

Mam kod taki jak

if [ $# -eq 0 ]
then

Chcę zrozumieć, co to $#znaczy, ale wyszukiwanie w Google jest bardzo złe w wyszukiwaniu tego rodzaju rzeczy.


3
Do wyszukiwania ze znakami interpunkcyjnymi lubię używać symbolhound.com. Zwykle znajduje to, czego potrzebuję.
Eric Andres

możesz przeglądać instrukcję
cud 173

Dla lepszego odniesienia i SEO: huk, znak liczbowy , ostry, U + 0023, & # 35 ;, znak komentarza i dolar!
Clément

Odpowiedzi:


37

Zawsze możesz sprawdzić stronę podręcznika swojej powłoki. man bashmówi:

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

Dlatego skrypt powłoki może sprawdzić, ile parametrów podano w kodzie:

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

@NoName Możesz zrobić manprawie wszystko, w tym mansiebie. Spróbuj także apropostrochę czasu.
CVn

@NoName możesz również, korzystając z systemu operacyjnego z narzędziami GNU (Linux, itp.), Użyć infoalbo strony podręcznika, albo dodatkowych informacji (bardzo szczegółowe i podzielone na przedziały), jeśli pakiety mają jakieś
Olivier Dulac

12

Tak właściwie,

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

Więc razem

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

W ten sposób możesz użyć $#do sprawdzenia liczby przekazanych argumentów / parametrów tak jak zrobiłeś i obsłużyć wszelkie nieoczekiwane sytuacje.

Podobnie mamy

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

itp.


8

To jest

  1. liczba parametrów, z którymi skrypt został wywołany

  2. liczba parametrów, które zostały ustawione w skrypcie przez set -- foo bar

  3. (w przypadku użycia w ramach funkcji) liczba parametrów, z którymi funkcja została wywołana ( setrównież tam działałaby).

Jest to wyjaśnione na stronie podręcznika użytkownika bash w bloku „Parametry specjalne”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.