Pasar variables al script

Pasar variables al script

Cuál es la diferencia entre:

./script.sh "$VARIABLE"

y

./script.sh ${VARIABLE}

¿Hay alguna?

Respuesta1

$VARIABLEy ${VARIABLE}son efectivamente lo mismo si son palabras independientes. Pero observe el siguiente ejemplo, especialmente en un script

VARIABLE=USER
echo $VARIABLE

obtienes salida

USER

pero cuando escribes

echo $VARIABLE1

esperando conseguir

USER1

no obtienes nada ya que no hay ninguna variable como VARIABLE1se define

Pero si usas

echo ${VARIABLE}1

obtienes el USER1resultado esperado.

Respuesta2

de Shawn J. Goff:$VAR vs ${VAR} y cotizar o no cotizar

VAR=$VAR1 es una versión simplificada de VAR=${VAR1}. Hay cosas que el segundo puede hacer que el primero no puede, por ejemplo, hacer referencia a un índice de matriz (no portátil) o eliminar una subcadena (POSIX-portátil). Consulte la sección Más sobre variables de la Guía Bash para principiantes y Expansión de parámetros en la especificación POSIX.

Usar comillas alrededor de una variable como en rm -- "$VAR1" o rm -- "${VAR}" es una buena idea. Esto convierte el contenido de la variable en una unidad atómica. Si el valor de la variable contiene espacios en blanco (bueno, caracteres en la variable especial $IFS, espacios en blanco de forma predeterminada) o caracteres globales y no los comillas, entonces cada palabra se considera para la generación de nombre de archivo (globbing), cuya expansión genera tantos argumentos como sea posible. lo que sea que estés haciendo.

información relacionada