Não tem 100% de certeza do que você está fazendo, mas adivinho. Por favor, informe se isso está errado.
O arquivo .sql, no meu caso de teste, chamarei test.sql
:
select * from test1;
select * from test2;
select * from test3;
E o script para ler e ecoar os dados sql:
#!/bin/sh
# Get the raw sql data
RAW='cat test.sql'
# We want to split the raw sql on a line return.
IFS="
"
# Echo out each line? Not sure if this is what you want.
for sql in $RAW
do
echo "SQL line: [${sql}]"
done
exit
Isso fornecerá o seguinte resultado:
SQL line: [select * from test1;]
SQL line: [select * from test2;]
SQL line: [select * from test3;]
Acho que o pouco que você está perdendo é a parte IFS
. De man sh
:
IFS Input Field Separators. This is normally set to ⟨space⟩,
⟨tab⟩, and ⟨newline⟩.