Script Bash et conditions IF [Résolu/Fermé]

Signaler
Messages postés
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
-
Messages postés
35384
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 août 2020
-
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

Messages postés
40806
Date d'inscription
jeudi 28 août 2003
Statut
Non membre
Dernière intervention
10 août 2020
4 757
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58216 internautes nous ont dit merci ce mois-ci

Messages postés
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
16
Merci jipicy je test demain.
Messages postés
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
16
Merci cela fonctionne c'était bien elif .
Messages postés
40806
Date d'inscription
jeudi 28 août 2003
Statut
Non membre
Dernière intervention
10 août 2020
4 757 >
Messages postés
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020

Alors... si c'était bien ça... ;-))
Messages postés
21
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
13 avril 2012

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
Messages postés
35384
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 août 2020
5 334
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  
...