Nome da variável da saída do comando

2

Eu tenho alguma string, e quero dividir em dois pontos ":" atribuindo variável com nome da parte esquerda e valor da parte direita. Por exemplo:

echo "Title: Some title" | sed 's/:.*//'

me dá o nome da variável desejada "Título" e:

echo "Title: Some title" | sed 's/.*: //'

me dá o valor "Some title".

Meu problema é como atribuir uma variável chamada "Title" pela saída do comando acima.

Eu posso atribuir o valor como $(echo "Title: Some title" | sed 's/.*: //) , mas não consigo encontrar como atribuir o nome

    
por zetah 24.02.2012 / 07:48

2 respostas

3

Dependendo de como isso vai ser usado e da sua versão bash, você provavelmente seria melhor usar um array associativo .

Caso contrário, sugiro que você falsifique um .

Por questões de integridade, você pode fazer isso usando eval . Observe que o eval é perigoso e você não deve usá-lo, a menos que seja necessário.

eval "${string/: /=\"}\""
    
por 24.02.2012 / 08:17
2

Esta é uma coisa bastante estranha de se fazer, mas eu acho que você poderia construir uma declaração export :

$ export $(echo "Title: Some title" | sed 's/:.*//')="$(echo "Title: Some title" | sed 's/.*: //')"
$ echo $Title
Some title
    
por 24.02.2012 / 08:09