2011-02-06 14 views
69

que estoy usando shell bash en Linux y desea utilizar más de 10 parámetros en el script de shellCómo manejar más de 10 parámetros con cáscara

+7

Tenga en cuenta que tener 10 parámetros harán que sea muy confuso. Tal vez sería mejor usar opciones (por ejemplo, '-a 1' o '--foo = barra '). Ver 'man getopt',' man getopts', y 'man bash' para algunas opciones para hacer eso. – Mikel

+5

Además, si todo lo que quiere hacer es pasar todas las opciones a otro comando, puede usar '" $ * "' o '" $ @ "', pero tenga en cuenta que '" $ @ "' es mejor porque hace lo correcto con espacios en blanco. – Mikel

Respuesta

107

utilizar llaves para activarlos:

echo "${10}" 

Usted también puede iterar sobre los parámetros posicionales como este:

for arg 

o

for arg in "[email protected]" 

o

while (($# > 0)) # or [ $# -gt 0 ] 
do 
    echo "$1" 
    shift 
done 
+0

y prueba 'help shift' –

+0

Ten en cuenta que $ {10} funcionará en bash, pero limitará tu portabilidad ya que muchas implementaciones de sh solo permiten especificaciones de un solo dígito. –

+0

@William: hay algunos shells que no lo aceptarán, como el shell Bourne heredado original, pero además de los shells que enumeré en otro comentario (Bash, dash, ksh y zsh), también funciona en csh, tcsh y Busybox ash. –

16

Puede tener hasta 255 parámetros con:

${255} 
+2

Creo que el límite depende del caparazón. Bash, dash, ksh y zsh no parecen tenerlo. 'sh -c 'echo $ {333}'/usr/bin/*' –

+1

Mi caparazón sube cómodamente a 2 millones 'set $ (seq 2097152); echo $ {2097152} ' –

Cuestiones relacionadas