Cuál es la diferencia entre:
./script.sh "$VARIABLE"
y
./script.sh ${VARIABLE}
¿Hay alguna?
Respuesta1
$VARIABLE
y ${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 VARIABLE1
se define
Pero si usas
echo ${VARIABLE}1
obtienes el USER1
resultado 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.