GNU/Linux >> Tutoriales Linux >  >> Linux

No se puede usar una matriz como variable de entorno

Un bash matriz no puede ser una variable de entorno ya que las variables de entorno solo pueden ser pares de cadenas clave-valor.

Puede hacer lo que hace el shell con su $PATH variable, que esencialmente es una matriz de rutas; convierta la matriz en una cadena, delimitada con algún carácter en particular que de otro modo no estaría presente en los valores de la matriz:

$ arr=( aa bb cc "some string" )
$ arr=$( printf '%s:' "${arr[@]}" )
$ printf '%s\n' "$arr"
aa:bb:cc:some string:

O más ordenado,

arr=( aa bb cc "some string" )
arr=$( IFS=:; printf '%s' "${arr[*]}" )
export arr

La expansión de ${arr[*]} serán los elementos del arr matriz separada por el primer carácter de IFS , aquí establecido en : . Tenga en cuenta que si lo hace de esta manera, los elementos de la cadena se separarán (no delimitado ) por : , lo que significa que no podrá distinguir un elemento vacío al final, si lo hubiera.

Una alternativa a pasar valores a un script usando variables de entorno es (¿obviamente?) usar los argumentos de la línea de comando:

arr=( aa bb cc )

./some_script "${arr[@]}"

El script luego accedería a los argumentos pasados ​​uno por uno usando los parámetros posicionales $1 , $2 , $3 etc, o mediante el uso de [email protected] :

printf 'First I got "%s"\n' "$1"
printf 'Then  I got "%s"\n' "$2"
printf 'Lastly there was "%s"\n' "$3"

for opt in "[email protected]"; do
    printf 'I have "%s"\n' "$opt"
done

Las matrices son específicas de bash. Las variables de entorno son pares de nombre y valor.

Lea las especificaciones sobre las variables de entorno, que dice, en parte:

El valor de una variable de entorno es una cadena de caracteres. Para un programa en lenguaje C, una matriz de cadenas denominada entorno estará disponible cuando comience un proceso. La matriz es apuntada por la variable externa environ , que se define como:

extern char **environ;

Estas cadenas tienen la forma nombre=valor; nombres no debe contener el carácter '='.


Linux
  1. ¿Cómo usar una variable como condición de caso?

  2. Sustitución de variables de entorno en sed

  3. Caracteres permitidos en nombres de variables de entorno de Linux

  4. Variable de entorno TERM no establecida

  5. Accesibilidad de variables de entorno en Linux.

Cómo establecer la variable de entorno en Windows

Cómo establecer variables de entorno en MacOS

Configurar la conexión de la base de datos usando la variable de entorno en Rails

Cómo establecer la variable de entorno en Bash

Las 20 razones principales para usar el entorno de escritorio KDE

10 razones para usar Pantheon como su entorno de escritorio