Construir matriz bash com apenas formato de string

0

Pergunta simples - perguntando por um amigo - existe uma maneira de passar um valor de string como variável env e ter o bash reconhecendo-o como um array? Em outras palavras, existe algum formato de string especial que diz ao bash que a string é uma matriz? Ou é como um array?

link

Por exemplo:

#!/usr/bin/env bash

my_array="$this_is_an_env_var"
    
por Alexander Mills 22.12.2017 / 10:34

1 resposta

3

:> export ar=(foo bar baz) # create and "export" array
:> bash -c 'echo ${ar[1]}' # array is not visible in a regular child process

:> declare -p ar           # get a string which correctly creates the array
declare -a ar=([0]="foo" [1]="bar" [2]="baz")
:> my_array="$(declare -p ar)" bash -c 'eval "$my_array";echo ${ar[1]}'
bar

O eval transforma a variável de string em uma variável de matriz. O eval só deve ser usado com fontes de dados confiáveis.

    
por 22.12.2017 / 10:43