IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script shell ne se lance pas


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Aidant
    Inscrit en
    Janvier 2024
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Aidant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2024
    Messages : 55
    Par défaut Script shell ne se lance pas
    Bonjour à tous, j'ai écris un petit script shell pour lancer en boucle un script python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/bash
    while [ true ]; 
    do
     sleep 3
     sudo python3 /home/pi/Domotique/Programmes/Enregistrement_Temperature_Salon_Chambre_ECS.py
    done
    mais quand je le lance sur un terminal je reçois cette erreur :

    sudo sh /home/pi/Domotique/Programmes/Cron_Chaudiere.sh
    /home/pi/Domotique/Programmes/Cron_Chaudiere.sh: 7: /home/pi/Domotique/Programmes/Cron_Chaudiere.sh: Syntax error: end of file unexpected (expecting "do")


    Pouvez-vous m'aider ?

    Merci d'avance
    Antoine

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Toine74 Voir le message
    mais quand je le lance sur un terminal je reçois cette erreur :
    Donc (contrairement à ton titre), ton script se lance parfaitement !!!

    Citation Envoyé par Toine74 Voir le message
    while [ true ];...
    Pouvez-vous m'aider ?
    C'est quoi ces crochets ? Tu as vu ça où ???

    Citation Envoyé par Toine74 Voir le message
    j'ai écrit un petit script shell pour lancer en boucle un script python :
    Pourquoi tu n'as pas fait un script Python qui tourne en tâche de fond plutôt que de le lancer et relancer toutes les 3 secondes ?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Salut,

    le problème semble être dans le script en python, parce que j'ai pris ton texte, ai remplacé la ligne qui appelle le .py par une autre commande (cat un_fichier) et ça fonctionne très bien.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Pour moi, c'est sur la dernière ligne que ça pose problème done : cette ligne n'est pas une ligne (fini par un retour à la ligne) au sens unix/linux...

    ou pire, le script est au format DOS.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    En fait il y a 2 soucis
    1. le #!/bin/bash n'est pas en première ligne. De là le script n'est pas considéré comme un script shell et tout dépend de la façon de l'appeler
    2. les crochets équivalent à la commande test donc while [ true ] est lu while test true ce qui signifie "est-ce que la chaine true est vraie. Ce qui est vrai mais non pas parce que "true" veut dire vrai mais juste parce que c'est une chaine non vide. Ca "marchotte" donc mais ça reste très bancal


    Citation Envoyé par disedorgue Voir le message
    Pour moi, c'est sur la dernière ligne que ça pose problème done : cette ligne n'est pas une ligne (fini par un retour à la ligne) au sens unix/linux...
    J'ai essayé mais un tel script sans '\n' après le "done" fonctionne encore. Et le message parle du "do" attendu.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Ok, mais l'erreur est sur la ligne 7 d'après le message...

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Hé oui, comme dans beaucoup de cas, les automates (compilateurs, interpréteurs, ...) tentent d'aller au plus loin. Tant qu'il y a une possibilité que les instructions retombent sur leur pattes le truc cherche et avance.
    Et fatalement quand arrive l'incompréhension (parce qu'à un moment donné il faut bien que la sanction tombe) ça affiche la ligne incomprise. Il est arrivé à la ligne 7 sans trouver le "do" tant "expected"
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Donc, c'est ma deuxième hypothèse qui doit être bonne (le fichier est au format DOS) et donc do\r n'est pas le do attendu...
    La ligne while passe certainement à cause (ou grâce) au ; .

    PS: rien testé, juste des hypothèses

Discussions similaires

  1. Script Shell qui ne démarre pas toutes les commandes
    Par andyajram dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 08/04/2020, 15h12
  2. Script shell pour tester si un répertoire est vide ou pas
    Par Ito dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 04/10/2006, 17h44
  3. Script shell ne fonctionne pas
    Par alexp dans le forum Linux
    Réponses: 7
    Dernier message: 15/06/2006, 16h41
  4. Script cron qui ne se lance pas
    Par alison239 dans le forum Administration système
    Réponses: 3
    Dernier message: 20/03/2006, 15h18
  5. [C#] Ne pas voir une fenetre shell quand on lance un process
    Par Vins83 dans le forum Windows Forms
    Réponses: 19
    Dernier message: 24/02/2005, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo