Explicación de sintaxis básica para variables en bashrc

Explicación de sintaxis básica para variables en bashrc

Quiero exportar correctamente una variable. Para hacerlo tengo que entender varias variaciones en la sintaxis. He visto los siguientes mecanismos para exportar una variable. En este caso estoy usando .bashrc:

  1. export MY_VARIABLE=$USER/.gradle--$

  2. export MY_VARIABLE="$USER/.gradle"--Citas

  3. export MY_VARIABLE=USER/.gradle--Sin $

  4. export $MY_VARIABLE=$USER/.gradle--Todos los $

¿Cuál es el significado del signo $ en estos casos? ¿Por qué unas veces se utiliza y otras no?

¿Necesitamos cotizaciones en los casos en que no hay espacios en la ruta? ¿Qué pasa si la ruta contenida en $USER contiene espacios?

¿Por qué no hay dólares en el lado izquierdo de la exportación?

Respuesta1

Los tokens como export, declarey similares utilizan explícitamente nombres de variables como parámetros. $Generalmente se puede entender que significa "el valor de", por lo que $variablesignifica "el valor de variable". Tome este conjunto de comandos:

foo=bar
bar=baz
export $foo
( echo "$foo" )

Lo que sucederá aquí es que obtendrá una línea de salida en blanco. Esto se debe a que en el exportcomando, $fooen realidad es bar(el valor de foo), por lo que el comando real ejecutado es export bar. Como foono se exporta, su valor predeterminado es nulo. Sin embargo, si la última línea fuera:

( echo "$bar" )

Obtendría el resultado de baz, cuyo valor barse había exportagregado a las próximas subcapas.

Generalmente es una muy buena idea utilizar comillas débiles (" "") alrededortodode sus referencias variables, por razones que incluyen, entre otras, la que usted menciona (es decir, espacios en nombres de archivos y rutas). Por ejemplo, si tuviéramos:

if [ $letter == a ]; then echo "ayyyy"; fi

pero letterestuvieran vacíos, el shell intentaría ejecutar

if [  == a ]

que es un error de sintaxis, pero entre comillas:

if [ "$letter" == a ];

se convierte

if [ "" == a ];

lo cual es válido.

información relacionada