J'écris un script pour passer des commandes à une console et rediriger la sortie vers un journal pour analyse. C'est le script que j'ai maintenant.Utilisation de EOF dans la fonction ksh
#!/bin/ksh
gg_sci(){
$GG_HOME/ggsci <<EOF > /home/org/obey.log
obey /home/org/mon.oby
EOF
}
check_st(){
status=`cat obey.log | grep -i $1 | awk '$2!=""{print $2}'`
echo $status
if [ $status -eq "RUNNING" ]
then
echo "GG process $1 is running"
exit 0
}
gg_sci
check_st test
Ce script fonctionne si je mets les 2 fonctions dans 2 scripts différents. Quand je les ai mis dans un seul script, je reçois une erreur
ksh: 0403-057 Syntax error: `}' is not expected.
Après le débogage, j'ai déterminé l'EOF est en train de lire dans le} qui ferme la fonction. Je ne suis pas sûr de ce que je fais mal, la fonction EOF fonctionne correctement si c'est la seule chose dans le script.
Vous avez raison. Merci pour votre aide ... Je me sens très bête, les plus petites erreurs sont les plus faciles à manquer. – Gautam
Et pendant votre édition, mettez également des guillemets autour de '$ status' (que se passera-t-il si le statut est vide ou contient un espace). Utilisez simplement des guillemets pour toutes les variables et (dans ce cas, innocent) utilisez des accolades: '" $ {status} "'. –
@WalterUn bon point, même si personnellement je préfère ne pas écrire d'accolades si la variable est seule. – mata