Syntax error: end of file unexpected (expecting "then")

Syntax error: end of file unexpected (expecting "then") - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 30-04-2016 à 16:19:24    

Bonjour j'ai un problème lorsque j'execute mon script avec mon vps linux sous debian 8
voici le message d'erreur:
007.sh: 9: 007.sh: Syntax error: end of file unexpected (expecting "then" )
 
et voici mon script: (Je viens d'apprendre les première bases en shell ceci est mon tout premier script soyez indulgent)
 

Code :
  1. if screen -list | grep -q "SkyBlock";
  2.     then
  3.         echo "Le serveur SkyBlock est deja en fonctionnement... "
  4.     else
  5.         echo "Demmarage du serveur SkyBlock ..."
  6.         cd /home/Minecraft/SkyBlock/
  7.         screen -dmS "SkyBlock" ./start.sh
  8.     fi


 
merci


Message édité par LeGamer7 le 30-04-2016 à 17:14:46
Reply

Marsh Posté le 30-04-2016 à 16:19:24   

Reply

Marsh Posté le 01-05-2016 à 12:00:04    

Aidez moi s'il vous plait

Reply

Marsh Posté le 01-05-2016 à 12:34:26    

C'est une erreur d'indentation tout simplement non ?
 

Code :
  1. if screen -list | grep -q "SkyBlock"; then
  2.     echo "Le serveur SkyBlock est déjà en fonctionnement... "
  3. else
  4.     echo "Démarrage du serveur SkyBlock ..."
  5.     cd /home/Minecraft/SkyBlock/
  6.     screen -dmS "SkyBlock" ./start.sh
  7. fi


Message édité par bistouille le 01-05-2016 à 12:35:27

---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 01-05-2016 à 12:39:36    

Syntax error: "fi" unexpected (expecting "then" )
 
Je ne sais vraiment pas d'ou vient le problème, j'ai appellé mon script on.sh et je l'execute avec la commande sh on.sh


Message édité par LeGamer7 le 01-05-2016 à 12:41:04
Reply

Marsh Posté le 01-05-2016 à 13:00:32    

Ok, je connais pas du tout la syntaxe, mais ça vient de ta commande dans ton else.
 
Il suffit de l'entourer de ` pour l'évaluer.
http://www.linux-france.org/articl [...] .htm#subst
 

Code :
  1. if screen -list | grep -q "SkyBlock"; then
  2.     echo "Le serveur SkyBlock est déjà en fonctionnement... "
  3. else
  4.     echo "Démarrage du serveur SkyBlock ..."
  5.     cd /home/Minecraft/SkyBlock/
  6.     `screen -dmS "SkyBlock" ./start.sh`
  7. fi



---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 01-05-2016 à 13:19:41    

J'ai à nouveau la même erreur :(
 
 
 Syntax error: "fi" unexpected (expecting "then" )
 


Message édité par LeGamer7 le 01-05-2016 à 13:20:01
Reply

Marsh Posté le 01-05-2016 à 13:49:15    

J'ai installé screen pour tester, et chez moi ça fonctionne parfaitement en lançant un simple script python, et y'a pas besoin de quotes pour la commande.
 

Code :
  1. if screen -list | grep -q "Test"; then
  2.     echo "Le processus est déjà en cours d'exécution"
  3. else
  4.     echo "Démarrage du processus"
  5.     cd /home/couic/projets/python/
  6.     screen -dmS "Test" ./demarrage.sh
  7. fi


 
Donc je vois pas.
 
Y'a quoi dans ton fichier start.sh ?
Tu l'as bien en exécutable dans les permissions ?
 
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 01-05-2016 à 14:02:26    

Le contenu du start.sh:
java -jar -Xms2560M -Xmx8024M -jar custom.jar
mais je pense que c'est vu que j'ai fais le script sous notepad non?

Reply

Marsh Posté le 01-05-2016 à 14:16:16    

Peu importe l'éditeur de texte.
 
Si tu te places dans le répertoire « SkyBlock » et que tu exécutes ton fichier start.sh, ton serveur minecraft est bien lancé ?
 
Si, oui, je ne peux t'aider plus, tu devrais demander à faire déplacer ton topic dans le forum linux, y'aura certainement des gens beaucoup plus calés que moi  :whistle:  
Et t'auras plus de chance d'avoir des réponses.
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 01-05-2016 à 14:20:20    

Je vais faire sa en tout cas merci pour ton aide et sinon lorsque j'execute mon start.sh cela fonctionne mais lorsque j'execute mon on.sh j'ai toujour la même erreur
 
Syntax error: "fi" unexpected (expecting "then" )

Reply

Marsh Posté le 01-05-2016 à 14:20:20   

Reply

Marsh Posté le 01-05-2016 à 14:22:12    

Heu je ne sais pas comment contacter un membre du staff pour qu'il bouge mon sujet :(


Message édité par LeGamer7 le 01-05-2016 à 14:22:32
Reply

Marsh Posté le 01-05-2016 à 14:38:53    

J'ai demandé :o


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 01-05-2016 à 14:39:43    

Merci ;)

Reply

Marsh Posté le 01-05-2016 à 15:09:20    

Ce sujet a été déplacé de la catégorie Programmation vers la categorie Linux et OS Alternatifs par Gilou


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-05-2016 à 15:10:26    

Merci d'avoir déplacé mon post en espérant que quelqu'un arrive à m'aider :)

Reply

Marsh Posté le 01-05-2016 à 15:12:46    

Tiens c'est marrant, en déplaçant le sujet, l'alerte modération a disparu de programmation. Si elle s'est déplacée aussi dans cette section, la clore.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-05-2016 à 17:45:23    

Je n'ai toujours pas trouvé pourquoi il ne marche pas j'espère que vous pourrez m'aider

Reply

Marsh Posté le 01-05-2016 à 18:22:44    

quel est le shell utilisé ?


---------------
Que va-t-il se passer cette gelgamar ? vous le découvrirez janamont à 20h
Reply

Marsh Posté le 01-05-2016 à 18:25:35    

if screen -list | grep -q "Test"; then
    echo "Le processus est déjà en cours d'exécution"
else
    echo "Démarrage du processus"
    cd /home/couic/projets/python/
    screen -dmS "Test" ./demarrage.sh
fi

Reply

Marsh Posté le 02-05-2016 à 06:49:15    

Il te demande le shell qui est utilisé par l'utilisateur lançant le script  :o  
 
Faudrait déjà que tu détermines qui lance le script sur l'os.
Je dirais Minecraft, vu que tu exécutes le fichier dans son home, mais à toi de le dire.
 
Soit en étant logué dans une console en étant cet utilisateur.
 

Code :
  1. echo $SHELL


 
Ou en étant en root ou autre.
 

Code :
  1. cat /etc/passwd | grep METTRE_ICI_LE_NOM_UTILISATEUR_LANCANT_LE_SCRIPT


 
 
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 02-05-2016 à 07:13:50    

Le script sera executé soit par l'utilisateur "Minecraft" soit par le "root" ou soit par une crontab

Reply

Marsh Posté le 02-05-2016 à 16:48:22    

bistouille a écrit :

Il te demande le shell qui est utilisé par l'utilisateur lançant le script  :o

 

Faudrait déjà que tu détermines qui lance le script sur l'os.
Je dirais Minecraft, vu que tu exécutes le fichier dans son home, mais à toi de le dire.

 

Soit en étant logué dans une console en étant cet utilisateur.

 
Code :
  1. echo $SHELL
 

Ou en étant en root ou autre.

 
Code :
  1. cat /etc/passwd | grep METTRE_ICI_LE_NOM_UTILISATEUR_LANCANT_LE_SCRIPT
  



Comme sa ?

 
Code :
  1. #!/bin/sh
  2. cat /home/Minecraft/SkyBlock/ | grep root
  3. if screen -list | grep -q "SkyBlock"; then
  4.     echo "Le serveur SkyBlock est déjà en fonctionnement... "
  5. else
  6.     echo "Démarrage du serveur SkyBlock ..."
  7.     cd /home/Minecraft/SkyBlock/
  8.     screen -dmS "SkyBlock" ./start.sh
  9. fi


Message édité par LeGamer7 le 02-05-2016 à 16:49:11
Reply

Marsh Posté le 02-05-2016 à 18:55:46    

Mais non    :pt1cable:  
Faut pas mettre ça dans ton exécutable.
 
C'est un serveur perso sur une machine que tu contrôles ou un serveur dédié ?
Parce que là, manifestement, tu ne connais strictement rien à linux.
 
Les commandes sont à écrire dans un terminal, uniquement pour déterminer si c'est le bash que tu utilises.
Mais bon, normalement ça doit-être le bash.
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 02-05-2016 à 18:58:45    

X) en effet je suis nouveau dans le monde du linux et c'est un serveur dédié

Reply

Marsh Posté le 02-05-2016 à 19:06:31    

Lorsque j'effectue la commande echo $SHELL sa me donne /bin/bash

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed