Cosa $#
significa in shell?
Ho un codice come
if [ $# -eq 0 ]
then
Voglio capire cosa $#
significa, ma la ricerca di Google è pessima per la ricerca di questo tipo di cose.
Cosa $#
significa in shell?
Ho un codice come
if [ $# -eq 0 ]
then
Voglio capire cosa $#
significa, ma la ricerca di Google è pessima per la ricerca di questo tipo di cose.
Risposte:
Puoi sempre controllare la pagina man della tua shell. man bash
dice:
Special Parameters
# Expands to the number of positional parameters in decimal.
Pertanto uno script di shell può verificare quanti parametri vengono forniti con codice come questo:
if [ "$#" -eq 0 ]; then
echo "you did not pass any parameter"
fi
man
quasi tutto, incluso man
se stesso. Prova anche un apropos
po 'di tempo.
info
sia per la pagina man, sia per informazioni addizionali (molto dettagliate e compartimentate) se i pacchetti ne hanno
In realtà,
`$` refer to `value of` and
`#` refer to `number of / total number`
Quindi insieme
`$#` refer to `The value of the total number of command line arguments passed.`
Quindi, puoi usare $#
per controllare il numero di argomenti / parametri passati come hai fatto e gestire eventuali situazioni impreviste.
Allo stesso modo, abbiamo
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
eccetera.
Questo è
il numero di parametri con cui è stato chiamato lo script
il numero di parametri che sono stati impostati nello script da set -- foo bar
(se usato all'interno di una funzione) il numero di parametri con cui è stata chiamata una funzione ( set
funzionerebbe anche lì).
Questo è spiegato nella pagina man di bash nel blocco "Parametri speciali".