2010-08-27 16 views
7

veo

foo() { 
if [[ $# -lt 1 ]]; then 
    return 0 
fi 

... 

} 

qué es exactamente lo compara con $ # como lo hace allí?

Respuesta

7

$# representa número de argumentos de línea de comando pasados ​​a la secuencia de comandos.

sh-3.2$ cat a.sh 
echo $# #print the number of cmd line args. 
sh-3.2$ ./a.sh 
0 
sh-3.2$ ./a.sh foo 
1 
sh-3.2$ ./a.sh foo bar 
2 
sh-3.2$ ./a.sh foo bar baz 
3 

Cuando se usa dentro de una función (como en su caso) que representa el número de argumentos pasados ​​a la función:

sh-3.2$ cat a.sh 
foo() { 
     echo $# #print the number of arguments passed to the function. 
} 
foo 1 
foo 1 2 
foo 1 2 3 

sh-3.2$ ./a.sh 
1 
2 
3 
3

$# es la cantidad de argumentos que se pasan al script. Consulte la subsección Parámetros especiales de la sección PARÁMETROS de la página del manual bash(1) para obtener la lista completa.

2

$# = Número de argumentos pasados ​​a la función.

en su código, la función devolverá 0 si la función no se llama con un parámetro al menos.