Traduction du sh au csh
yoopi
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
je voudrais traduire ceci du shell au csh
ce qui se passe c'est que en shell (sur linux) cela fonctionne très bien mais en csh (sur solaris) j'ai un petit problème;
le compteur qui évolue dans ma boucle est initialisé à 0 lorsque je sors de la boucle et donc sa valeur est perdue, hors j'ai grandement besoin de la valeur de mon compteur.
qqn peut m'aider ?
grep " AVAIL" $HOME/file.txt | awk -F"(" '{ print $2 }'| awk -F")" '{ print $1 }' > $HOME/liste_node
cpt=0
{
while read line
do grep "$line" $HOME/liste_node >/dev/null
if [ "$?" = 1 ]
then
echo ""$line""
cpt=`expr $cpt + 1`
fi
done < $HOME/list.txt
}
echo $cpt
if [ "$cpt" = 0 ]
then
STAT=" ALL NODE ARE AVAILABLE "
echo $STAT
RET=0
exit $RET
else
STAT=" THERE IS $cpt NODE MISSING "
echo $STAT
RET=1
exit $RET
fi
d'avance merci
je voudrais traduire ceci du shell au csh
ce qui se passe c'est que en shell (sur linux) cela fonctionne très bien mais en csh (sur solaris) j'ai un petit problème;
le compteur qui évolue dans ma boucle est initialisé à 0 lorsque je sors de la boucle et donc sa valeur est perdue, hors j'ai grandement besoin de la valeur de mon compteur.
qqn peut m'aider ?
grep " AVAIL" $HOME/file.txt | awk -F"(" '{ print $2 }'| awk -F")" '{ print $1 }' > $HOME/liste_node
cpt=0
{
while read line
do grep "$line" $HOME/liste_node >/dev/null
if [ "$?" = 1 ]
then
echo ""$line""
cpt=`expr $cpt + 1`
fi
done < $HOME/list.txt
}
echo $cpt
if [ "$cpt" = 0 ]
then
STAT=" ALL NODE ARE AVAILABLE "
echo $STAT
RET=0
exit $RET
else
STAT=" THERE IS $cpt NODE MISSING "
echo $STAT
RET=1
exit $RET
fi
d'avance merci
A voir également:
- Traduction du sh au csh
- Google traduction photo - Guide
- Fichier sh - Forum Shell
- Hibiki traduction telecharger - Accueil - Intelligence artificielle
- Waldik traduction - Forum Loisirs / Divertissements
- Bible hébreu traduction mot à mot pdf - Télécharger - Vie quotidienne
3 réponses
Essaie plutôt avec une boucle "foreach" à la place du while :
if [ ... ] then ... fi
en
if ( ...) then ... endif
dans le reste du script ;-))
foreach line ( $(cat /export/home/glerelay/list.txt) )
grep "$line" liste_node >/dev/null
if ("$?" == 1)
then
@ cpt++
endif
endEt n'oublie pas de convertir tous les :
if [ ... ] then ... fi
en
if ( ...) then ... endif
dans le reste du script ;-))
hello
pourquoi ne pas l'exécuter tel quel sur Solaris en plaçant en première ligne:
#!/bin/sh
ou
#!/bin/ksh
pourquoi ne pas l'exécuter tel quel sur Solaris en plaçant en première ligne:
#!/bin/sh
ou
#!/bin/ksh
hello,
j'avais oublié de mettre le programme au complet ; le voici :
#!/bin/sh
cpt=0
grep accepted /export/home/glerelay/slerel/log/p10_`\date +"%Y%m%d"`.log |awk -F"." '{ p
rint $3 }'|awk -F")" '{ print $1 }' > liste_node
{
while read line
do grep "$line" liste_node >/dev/null
if [ "$?" = 1 ]
then
echo "$line"
cpt=`expr $cpt + 1`
fi
done < /export/home/glerelay/list.txt
}
echo "##############"
echo $cpt
if [ "$cpt" = 0 ]
then
STAT=" ALL NODE ARE AVAILABLE "
echo $STAT
RET=0
exit $RET
else
STAT=" !!! THERE IS NODE MISSING !!! "
echo $STAT
RET=1
exit $RET
fi
lorsque j'affiche la valeur de mon compteur quand je sors de la boucle c'est toujours 0 alors que ce devrait être 1
je vais seulement aller voir la page que tu m'as conseillé.
merci
j'avais oublié de mettre le programme au complet ; le voici :
#!/bin/sh
cpt=0
grep accepted /export/home/glerelay/slerel/log/p10_`\date +"%Y%m%d"`.log |awk -F"." '{ p
rint $3 }'|awk -F")" '{ print $1 }' > liste_node
{
while read line
do grep "$line" liste_node >/dev/null
if [ "$?" = 1 ]
then
echo "$line"
cpt=`expr $cpt + 1`
fi
done < /export/home/glerelay/list.txt
}
echo "##############"
echo $cpt
if [ "$cpt" = 0 ]
then
STAT=" ALL NODE ARE AVAILABLE "
echo $STAT
RET=0
exit $RET
else
STAT=" !!! THERE IS NODE MISSING !!! "
echo $STAT
RET=1
exit $RET
fi
lorsque j'affiche la valeur de mon compteur quand je sors de la boucle c'est toujours 0 alors que ce devrait être 1
je vais seulement aller voir la page que tu m'as conseillé.
merci
Salut,
Voir sur cette page les principales différences et correspondances entre les shells sh et csh.
Voir sur cette page les principales différences et correspondances entre les shells sh et csh.
re,
j'ai corrigé quelques paramètres :
#!/bin/csh
set cpt = 0
grep accepted /export/home/glerelay/slerel/log/p10_`\date +"%Y%m%d"`.log |awk -F"." '{ p
rint $3 }'|awk -F")" '{ print $1 }' > liste_node
while (read line)
grep "$line" liste_node >/dev/null
if [ "$?" = 1 ]
then
echo "$line"
cpt=`expr $cpt + 1`
fi
end < /export/home/glerelay/list.txt
echo "##############"
echo $cpt
if [ "$cpt" = 0 ]
then
STAT=" ALL NODE ARE AVAILABLE "
echo $STAT
RET=0
exit $RET
else
STAT=" !!! THERE IS NODE MISSING !!! "
echo $STAT
RET=1
exit $RET
fi
mais après exécution, il me dit que j'ai un problème de syntax dans ma boucle while ????
j'ai corrigé quelques paramètres :
#!/bin/csh
set cpt = 0
grep accepted /export/home/glerelay/slerel/log/p10_`\date +"%Y%m%d"`.log |awk -F"." '{ p
rint $3 }'|awk -F")" '{ print $1 }' > liste_node
while (read line)
grep "$line" liste_node >/dev/null
if [ "$?" = 1 ]
then
echo "$line"
cpt=`expr $cpt + 1`
fi
end < /export/home/glerelay/list.txt
echo "##############"
echo $cpt
if [ "$cpt" = 0 ]
then
STAT=" ALL NODE ARE AVAILABLE "
echo $STAT
RET=0
exit $RET
else
STAT=" !!! THERE IS NODE MISSING !!! "
echo $STAT
RET=1
exit $RET
fi
mais après exécution, il me dit que j'ai un problème de syntax dans ma boucle while ????
slt,
mon programme ressemble à cela maintenant mais il y a une erreure de syntax dans la boucle while :
#!/bin/csh
set cpt = 0
grep accepted /export/home/glerelay/slerel/log/p10_`\date +"%Y%m%d"`.log |awk
-F"." '{ print $3 }'|awk -F")" '{ print $1 }' > liste_node
while (read line)
grep "$line" liste_node >/dev/null
if ("$?" == 1)
then
@ cpt++
endif
end < /export/home/glerelay/list.txt
echo "##############"
echo $cpt
if [ "$cpt"= = 0 ]
then
set STAT = " ALL NODE ARE AVAILABLE "
echo $STAT
set RET = 0
exit $RET
else
set STAT = " !!! THERE IS NODE MISSING !!! "
echo $STAT
set RET = 1
exit $RET
fi
mon programme ressemble à cela maintenant mais il y a une erreure de syntax dans la boucle while :
#!/bin/csh
set cpt = 0
grep accepted /export/home/glerelay/slerel/log/p10_`\date +"%Y%m%d"`.log |awk
-F"." '{ print $3 }'|awk -F")" '{ print $1 }' > liste_node
while (read line)
grep "$line" liste_node >/dev/null
if ("$?" == 1)
then
@ cpt++
endif
end < /export/home/glerelay/list.txt
echo "##############"
echo $cpt
if [ "$cpt"= = 0 ]
then
set STAT = " ALL NODE ARE AVAILABLE "
echo $STAT
set RET = 0
exit $RET
else
set STAT = " !!! THERE IS NODE MISSING !!! "
echo $STAT
set RET = 1
exit $RET
fi