DjRamzy Posté(e) le 13 mars 2009 Partager Posté(e) le 13 mars 2009 Bonjour, J'essaie de faire un script sur mon DS-207+ mais je n'arrive pas en en faire fonctionner même le plus simple. En effet dès qu'il y a un 'case' ou un 'if' j'ai la même erreur : unexpected (expecting "...") Par exemple : #!/bin/sh if [ "$1" = "oui" ]; then echo "moi aussi" else echo "non" fi J'arrive au message d'erreur : 9: Syntax error: end of file unexpected (expecting "then") et pareil pour les 'case' sauf que c'est (expecting "in"). Merci pour votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fredlime Posté(e) le 13 mars 2009 Partager Posté(e) le 13 mars 2009 Bonsoir, Tu trouveras plusieurs 'type' d'écriture pour ton cas, mais ton probleme est un manque d'espace entre le ] et le ; #!/bin/sh if [ "$1" = "oui" ] ; then echo "moi aussi" else echo "non" fi Sinon, pour ce genre de test, tu as également : #!/bin/sh if test "$1" = "oui" then echo "moi aussi" else echo "non" fi ou plus compacte [ "$1" = "1" ] && echo "oui" || echo "non" A+ Fred. Lien vers le commentaire Partager sur d’autres sites More sharing options...
DjRamzy Posté(e) le 13 mars 2009 Auteur Partager Posté(e) le 13 mars 2009 Merci pour cette réponse rapide et pour le lien, ça me permettra d'aller plus loin. Mais le problème est toujours la, avec ce code : #!/bin/sh if test "$1" = "oui" then echo "moi aussi" else echo "non" fi Je ne pense pas que ce soit un problème du script en lui même car en récupérant les codes des script du syno (ceux du boot) j'ai toujours cette erreur. Par contre je peux lancer un script de démarrage ... Je m'explique : #je copie le script pour ne pas effacer quelque chose cp /usr/syno/etc.defaults/rc.d/S09DDNS.h /volume1/public/ #je lance l'exécution sh S09DDNS.sh #tout va bien Mais si je copie le code dans un autre fichier ou que je modifie ce fichier (l'écriture d'un echo par exemple) j'obtiens toujours la même erreur : unexpected blablabla... note : avec les deux versions "if test" et "if []" j'ai toujours le problème mais avec la version courte : [ "$1" = "oui" ] && echo "moi aussi" || echo "non" ça fonctionne (et même sans le #!/bin/sh), mais si je doit tout faire en condensée!! n'aurait-il pas une autre solution? Lien vers le commentaire Partager sur d’autres sites More sharing options...
fredlime Posté(e) le 13 mars 2009 Partager Posté(e) le 13 mars 2009 Tu cherches a faire quoi exactement ? La variable $1 doit être le premier argument lancé avec le script. C'est bien cela ? Dit m'en plus... Fred. Lien vers le commentaire Partager sur d’autres sites More sharing options...
DjRamzy Posté(e) le 13 mars 2009 Auteur Partager Posté(e) le 13 mars 2009 Pour commencer j'ai mis en route le système des hôtes virtuel pour pouvoir héberger plusieurs sites. Pour y accéder il faut une adresse qui renvoit à l'adresse IP du syno. Mais il en faut une par site. Comme j'ai voulue garder mon adresse en dynamic je me suis inscrit chez dyndns.org pour avoir une redirection. J'ai configuré la mise a jour du DNS avec DDNS l'outils du syno, or ce programme ne gère qu'une seul redirection. Il m'a donc fallue trouver autre chose pour gérer plusieurs redirections. J'ai trouvé ddclient C'est à partir de la que j'ai besoin d'un script qui me lance ddclient proprement. J'ai donc voulue recopier ceux du syno, notament le S09DDNS.sh qui prend en compte si oui ou non le service DNS est activé sur le syno (pour faire d'une pierre deux coups). Mais la problème, avec soit le if soit le case prenant en compte la commande : start|stop|restart Et je ne vois vraiment pas pourquoi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fredlime Posté(e) le 13 mars 2009 Partager Posté(e) le 13 mars 2009 Et alors ?? Désolé, je ne comprend pas. Sans doute, la petite fatigue de fin de semaine pour moi... A+ Fred. Lien vers le commentaire Partager sur d’autres sites More sharing options...
DjRamzy Posté(e) le 13 mars 2009 Auteur Partager Posté(e) le 13 mars 2009 Ba j'ai juste répondu à la question. Le script doit lancer ddclient et doit comme les autres scripts du syno prendre en argument start stop ou restart. Mais mon problème reste que les structures à base de if ou case ne marche pas. Et je trouve ça d'autant plus embetant que je voulais faire d'autres scripts. Alors si quelqu'un connait la solution! Lien vers le commentaire Partager sur d’autres sites More sharing options...
WahJam Posté(e) le 13 mars 2009 Partager Posté(e) le 13 mars 2009 Ba j'ai juste répondu à la question. Le script doit lancer ddclient et doit comme les autres scripts du syno prendre en argument start stop ou restart. Mais mon problème reste que les structures à base de if ou case ne marche pas. Et je trouve ça d'autant plus embetant que je voulais faire d'autres scripts. Alors si quelqu'un connait la solution! Tes scripts, tu les créés bien au format unix ? (et surtout pas avec un éditeur comme notepad sous windows) Pascal Lien vers le commentaire Partager sur d’autres sites More sharing options...
DjRamzy Posté(e) le 13 mars 2009 Auteur Partager Posté(e) le 13 mars 2009 c'est à dire format unix? En effet je travail avec wordpad, je vais essayer sous unix. j'espère que ce sera ça! Lien vers le commentaire Partager sur d’autres sites More sharing options...
WahJam Posté(e) le 13 mars 2009 Partager Posté(e) le 13 mars 2009 c'est à dire format unix? Les caractères de fin de lignes ne sont pas les mêmes entre windows (ou dos) et unix / linux. Du coup un script construit sous windows est mal interprété sous unix ou linux. En effet je travail avec wordpad, je vais essayer sous unix. j'espère que ce sera ça! Le problème vient probablement de là alors. Tu as plusieurs solutions, dont : - utiliser l'éditeur vi en ssh ou telnet sur le syno (mais pas très convivial, bien que certains ne jurent que par lui ), - utiliser un éditeur windows qui te permet de sauvegarder au format unix (par exemple PSPad qui est gratuit), - utiliser la commande perl suivante sur le syno pour convertir le fichier au format dos vers un format unix : perl -pi -e 's/\r\n/\n/g' script.sh Pascal Lien vers le commentaire Partager sur d’autres sites More sharing options...
DjRamzy Posté(e) le 14 mars 2009 Auteur Partager Posté(e) le 14 mars 2009 Ok c'est bon, tout ça pour ça! Merci à vous deux, maintenant je vais faire allé faire un tour sur mon ubuntu Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.