Es gibt ein paar verschiedene Ansätze in diesem askTom-Thread auf Rückgabe von Werten von SQL*Plus an ein Shell-Skript .
Ein gängiger Ansatz besteht darin, zusätzlich zu dem Wert, den Sie zurückgeben möchten, ein konstantes Token auszuwählen (in Toms Beispiel ist dies die Zeichenfolge "KEEP") und dann sed (oder Ihren bevorzugten Befehlszeilen-Parser) zu verwenden, um die Daten zu extrahieren Sie eigentlich interessiert sind
#!/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
Andere Ansätze, wie z. B. Ansätze, die es Ihnen ermöglichen, mehrere Ausgabezeilen lesen werden in dem Thread auch diskutiert.
Wenn Sie nicht möchten, dass die Kopfzeile gedruckt wird, sollten Sie
angebenset head off
in Ihrem SQL*Plus-Skript -- Ich bin mir nicht sicher, warum Sie den Header explizit im Skript aktivieren, wenn Sie den Header nicht möchten ... Möchten Sie einen Teil des Headers behalten?