Com a --batch
opção , mysql
deve produzir o resultado um registro em uma linha e colunas separadas por tabulações. Você pode ler as linhas em uma matriz com % de coilde% e substituição de processos ou substituição de comandos e atribuição de matriz:
mapfile results < <( mysql --batch ... < query.sql )
ou
set -f # disable globbing
IFS=$'\n' # set field separator to NL (only)
results=( $(mysql --batch ... ) )
(Observe que mapfile
permanece modificado e globbing desativado após isso.)
Então, se você quiser dividir as colunas de uma linha para algumas variáveis:
IFS=$'\t' read -r col1 col2 col2 ... <<< "${results[0]}"
Sua tarefa
linesIN='cat /tmp/query.csv | sed 's/\t/,/g''
não é uma atribuição de matriz (falta o parêntese). Apenas atribui a saída da substituição de comandos a uma variável de string regular. (Todas as novas linhas serão incorporadas lá, mas ainda assim será uma única string.) IFS
ainda funciona desde que em matrizes de um único elemento Bash / ksh e variáveis escalares agem da mesma forma.