Pelo que entendi (o material <<EOF2
no final não é cristalino), o resultado final que você procura é alimentar o seguinte em sqlplus64
:
@update.sql AAA 30
@update.sql ABC 10
@update.sql EDF 30
Para produzir isso, em vez de fazer um loop sobre o conteúdo de ambos os arquivos, você pode combiná-los. Usando paste
em ambos os arquivos ( paste doc1.lst doc2.lst
) fornece
AAA 30
ABC 10
EDF 30
( paste
une-se às guias por padrão). Alterar o delimitador com paste -d ' ' doc1.lst doc2.lst
fornece
AAA 30
ABC 10
EDF 30
Em seguida, precisamos adicionar @update.sql
como um prefixo. isso pode ser feito com sed
, substituindo o início de cada linha ( ^
) pelo prefixo:
paste -d ' ' doc1.lst doc2.lst | sed 's/^/@update.sql /'
produz o resultado desejado.
Isso pode ser alimentado com um único disparo em sqlplus64
:
paste -d ' ' doc1.lst doc2.lst | sed 's/^/@update.sql /' | sqlplus64 $User/$Pass@$ORACLE_SID
Se você precisar de exit
no final do script alimentado em sqlplus64
:
(paste -d ' ' doc1.lst doc2.lst | sed 's/^/@update.sql /'; echo exit) | sqlplus64 $User/$Pass@$ORACLE_SID
Se você realmente quer executar as coisas linha por linha, você pode while read
de cada linha do resultado e alimentar isso para sqlplus64
.