Existem algumas abordagens diferentes neste tópico do askTom em retornando valores do SQL*Plus para um script de shell .
Uma abordagem comum é selecionar um token constante além do valor que você deseja retornar (no exemplo de Tom, que é a string "KEEP") e então usar sed (ou seu analisador de linha de comando favorito) para extrair os dados que você está realmente interessado em
#!/bin/ksh
x=`sqlplus / <<endl | grep KEEP | sed 's/KEEP//;s/[ ]//g'
select 'KEEP' , max(sal) from emp;
exit
endl`
echo the answer is $x
Outras abordagens, como abordagens que permitem ler várias linhas de saída também são discutidos nesse tópico.
Se você não quiser que o cabeçalho seja impresso, você deve especificar
set head off
em seu script SQL*Plus-- não sei por que você está configurando explicitamente o cabeçalho no script se não quiser o cabeçalho... Deseja manter alguma parte do cabeçalho?