Il existe plusieurs approches différentes dans ce fil askTom sur renvoi des valeurs de SQL*Plus à un script shell .
Une approche courante consiste à sélectionner un jeton constant en plus de la valeur que vous souhaitez renvoyer (dans l'exemple de Tom, c'est la chaîne "KEEP"), puis à utiliser sed (ou votre analyseur de ligne de commande préféré) pour extraire les données que vous êtes réellement intéressé par
#!/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
D'autres approches, telles que les approches qui vous permettent de lire plusieurs lignes de sortie sont également abordés dans ce fil.
Si vous ne voulez pas que l'en-tête soit imprimé, vous devez spécifier
set head off
dans votre script SQL*Plus - Je ne sais pas pourquoi vous définissez explicitement l'en-tête dans le script si vous ne voulez pas l'en-tête... Voulez-vous conserver une partie de l'en-tête ?