¿Cuál es el significado de una variable de bash utilizado como esto:
${Server?}
¿Cuál es el significado de una variable de bash utilizado como esto:
${Server?}
Funciona casi lo mismo que (desde el bash
página del manual):
${parameter:?word}
Display Error if Null or Unset. If parameter is null or unset, the expansion of word (or a message to that effect if word is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of parameter is substituted.
Eso comprobaciones de variante particulares para asegurar que la variable exista s (está definido y no es nulo). Si es así, lo usa. De lo contrario, emite el mensaje de error especificado por word
(o uno adecuado si no hay word
) y finaliza la secuencia de comandos.
la diferencia real entre eso y la versión no de colon se puede encontrar en el bash
página de manual encima de la sección citado:
Cuando no se realiza la expansión de subcadena, utilizando las formas documentan a continuación,
bash
pruebas para un parámetro eso está desarmado o nulo. Omitir los dos puntos resulta en una prueba solo para un parámetro que está desarmado.
En otras palabras, la sección anterior se puede modificar para leer (básicamente de sacar los bits de "nulo"):
${parameter?word}
Display Error if Unset. If parameter is unset, the expansion of word (or a message to that effect if word is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of parameter is substituted.
La diferencia es ilustrado así:
pax> unset xyzzy ; export plugh=
pax> echo ${xyzzy:?no}
bash: xyzzy: no
pax> echo ${plugh:?no}
bash: plugh: no
pax> echo ${xyzzy?no}
bash: xyzzy: no
pax> echo ${plugh?no}
pax> _
Allí, puede ver que, aunque las variables nulas y nula dan como resultado un error con :?
, solo el error de unset con ?
.
Esto significa que la secuencia de comandos debe abortar si no se define la variable
Ejemplo:
#!/bin/bash
echo We will see this
${Server?Oh no! server is undefined!}
echo Should not get here
Este script imprimirá el primer eco y el mensaje de error "Oh no! ...".
Ver todas las sustituciones de variables de fiesta aquí: http://tldp.org/LDP/abs/html/parameter-substitution.html
Y sin palabra, hay un mensaje de error predeterminado "parámetro nulo o no establecido" (mismo mensaje con o sin dos puntos). –