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.
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.
Odpowiedzi:
Zawsze możesz sprawdzić stronę podręcznika swojej powłoki. man bash
mó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
man
prawie wszystko, w tym man
siebie. Spróbuj także apropos
trochę czasu.
info
albo strony podręcznika, albo dodatkowych informacji (bardzo szczegółowe i podzielone na przedziały), jeśli pakiety mają jakieś
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.
To jest
liczba parametrów, z którymi skrypt został wywołany
liczba parametrów, które zostały ustawione w skrypcie przez set -- foo bar
(w przypadku użycia w ramach funkcji) liczba parametrów, z którymi funkcja została wywołana ( set
również tam działałaby).
Jest to wyjaśnione na stronie podręcznika użytkownika bash w bloku „Parametry specjalne”.