Eu faria isso usando apenas o bash
:
#!/bin/bash
read -e -p 'Enter the string: ' post
declare -A myArr
while IFS='&' read name age; do
myArr["${name##*=}"]="${age##*=}"
done <<<"$post"
printf 'NAME: %s, AGE: %s\n' "${!myArr[@]}" "${myArr[@]}"
Aqui está o que recebo na saída:
Enter the string: name=Foo Bar&age=40
NAME: Foo Bar, AGE: 40
-
A string de entrada é spitted em
&
usandoIFS
variável ambiental -
Os valores de nome e idade são analisados usando o padrão de expansão de parâmetro
${var##*=}
-
Você pode obter todas as chaves usando
${!myArr[@]}
e todos os valores usando${!myArr[@]}
Na prática, não acho que você faria apenas uma matriz associativa de um elemento. Se você tiver vários elementos, substitua a última printf
line por uma simples construção for
para fazer um loop pelas chaves:
for key in "${!myArr[@]}"; do
printf 'NAME: %s, AGE: %s\n' "$key" "${myArr["$key"]}"
done