2011-07-08 9 views
10

Normalmente cuando un parámetro se pasa a un script de shell, el valor entra en $ {1} para el primer parámetro de, $ {2} para el segundo, etc.¿Valores predeterminados en un script de shell de Unix?

¿Cómo se establecen los valores por defecto para estos parámetros , entonces, si no se pasa ningún parámetro al script, ¿podemos usar un valor predeterminado para $ {1}?

Respuesta

12

No puede, pero puede asignar a una variable local como esta: ${parameter:-word} o usar la misma construcción en el lugar donde necesita $ 1. esta menas utilizan palabra si _paramater es nulo o desarmar

Nota, esto funciona en fiesta, comprobar su cáscara para la sintaxis de valores por defecto

+2

También funciona en conchas Bourne, Korn y POSIX, por lo que es ampliamente utilizable. No funciona en derivados de C Shell, pero entonces, es mejor dejar las conchas de mar en la orilla del mar. –

+2

Si una cadena vacía puede ser una entrada válida, debe usar '$ {parameter-word}' - No destruirá las cadenas vacías. – l0b0

4
#!/bin/sh 
MY_PARAM=${1:-default} 

echo $MY_PARAM 
9

Se podría considerar:

set -- "${1:-'default for 1'}" "${2:-'default 2'}" "${3:-'default 3'}" 

El resto del script puede usar $1, $2, $3 sin más comprobaciones.

Nota: esto no funciona bien si puede tener una lista indeterminada de archivos al final de sus argumentos; funciona bien cuando solo puedes tener de cero a tres argumentos.

0

Tal vez no entiendo su pregunta así, sin embargo, me sentiría inclinado a resolver el problema de una manera menos sofisticada:

     ! [[ ${1} ]] && declare $1="DEFAULT" 

Espero que ayude.

Cuestiones relacionadas