Script Bash et conditions IF

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 2 juil. 2008 à 18:34
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 13 avril 2012 à 12:00
Bonjour,

j'ai un bout de code dans mon fichier testmaj.sh :

#! /bin/bash

OMEMAJ="/home/${USER}"

if [ "${USER}" == "toto" ]
then
        
     REPMAJ="totorep"
        
else if [ "${USER}" == "tata" ]
then
        
        REPMAJ="tatarep"
        
else 

    echo "pas de dossier"
    exit 1
fi
exit 0


mais j'ai l'erreur :

./testmaj.sh: line 21: syntax error: unexpected end of file

Avez vous une idée?

Merci.

L'accès au savoir est la première liberté que chaque homme devrait avoir.

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
2 juil. 2008 à 18:48
Salut,
#! /bin/bash

OMEMAJ="/home/${USER}"

if [ "${USER}" == "toto" ]
then
        
     REPMAJ="totorep"
        
elif [ "${USER}" == "tata" ]
then
        
        REPMAJ="tatarep"
        
else 

    echo "pas de dossier"
    exit 1
fi
exit 0
;-))
7
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
2 juil. 2008 à 23:29
Merci jipicy je test demain.
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
4 juil. 2008 à 09:01
Merci cela fonctionne c'était bien elif .
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024
4 juil. 2008 à 20:22
Alors... si c'était bien ça... ;-))
0
mourad.ounough Messages postés 21 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 13 avril 2012
Modifié par mourad.ounough le 13/04/2012 à 11:47
bonjour jpicy

jai une question sur ce sujet jai fait un script pour checker si le fichier est vide pas de mail ,alors s'il nest pas vide jenvoi le mail mais méme il est vide je recoi un mail (vide)

voila le script :

day='date "+%Y-%m-%d %H:%M:%S " '
ssh user@ip ' /home/directory/remotescript.sh' >> /home/directory/local/resultat.lst


[ -s /home/directory/local/resultat.lst ]

[ -e /home/directory/local/resultat.lst ]
echo $?

if [ 'echo $?' -eq 1 ];then


(
echo open ip@serveur
sleep 1
echo helo localhost
sleep 1
echo mail from: @group
sleep 1
echo rcpt to: admin@@domaine.com
sleep 1
echo data
sleep 1
echo subject: DAILY_CHECKLIST_$day
sleep 1
echo From: admin@@domaine.com
sleep 1
echo To: admin@@domaine.com
sleep 1
echo Cc: admin@@domaine.com
sleep 1
echo "Dear all,"
echo
echo
echo "The following check list is done : "
echo " "
echo
sleep 1
echo
echo
cat /home/directory/local/resultat.lst
echo
echo
echo "With Regards,"
echo "admin@@domaine.com team."



echo .
sleep 1
echo quit ) | telnet > /dev/null 2>&1



fi

rm /home/directory/local/resultat.lst


exit

#############################

merci a vous en avance

mes respects

cdt
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 13/04/2012 à 12:14
Salut,

[ -s /home/directory/local/resultat.lst ]
[ -e /home/directory/local/resultat.lst ]


Il te faut choisir, ou l'un ou l'autre, mais pas les 2 ;-(
Mais dans ton cas il faut garder que la condition '-s' (on teste si la taille est différente de zéro).

echo $?
if [ 'echo $?' -eq 1 ];then


Idem, si tu affiches le code retour avec la commande "echo", alors le prochain "$?" (celui que tu testes ensuite) ne vaudra plus la valeur de retour de ton test "[ -s /home/directory/local/resultat.lst ]", mais la valeur de retour de "echo $?" ;-\

Dans ce cas il vaut meiux garder le résultat dans une variable :
[ -s /home/directory/local/resultat.lst ] 

retval=$? 
echo "${retval}" 

if [ "${retval}" -eq 1 ];then  
...
0