Erreur de script que je ne comprends pas

Bonjour à tous,

J’utilise des scripts pour allumer/éteindre mes PC à distance (RaspberryPI je t’aime <3)

Mon premier script fonctionne depuis très longtemps, voici ce qu’il retourne :

root@raspberrypi:/home/scripts# ./powerOnSalon.sh Sending magic packet to 255.255.255.255:9 with **:**:**:**:**:** Demarrage du PC du salon IP = 192.168.125.50

Le second script, qui ne veut pas passer, me retourne ceci :

root@raspberrypi:/home/scripts# ./PCSalon.sh start ./PCSalon.sh: line 6: syntax error near unexpected token `wakeonlan' ./PCSalon.sh: line 6: ` wakeonlan $Mac_Address'

Voici le premier script :

#!/bin/sh wakeonlan **:**:**:**:**:** echo "Demarrage du PC du salon" echo "IP = 192.168.125.50"

Voici le second :

[code]#!/bin/bash

Mac_Address=:::::

function start_PC{
wakeonlan $Mac_Address
echo " Demarrage du PC du salon"
echo " IP = 192.168.125.50"
}

function stop_PC{
net rpc shutdown -I 192.168.125.50 -U Administrator%*****************
}

Le $1 est l’argument lors du lancement de la commande "service PCSalon.sh sta$

case $1 in

#si l'argument est start
start)

#je lance la fonction start_PC
start_PC

#indique la fin du premier case
;;

#si l'argument est stop
stop)

#je lance la fonction stop_PC
stop_PC

#indique la fin du stop
;;

#dans le cas ou je mets autre chose(donc mauvais argument),on fait une acti$
*)

#j'efface ce qu'il y a l'ecran
clear

#et j'annonce les seuls arguments permis (donc la bonne syntaxe)
echo "Usage de la commande : PCSalon [start/stop]"
;;

#case a l’envers pour indiquer la fin du case
esac[/code]

J’ai déjà essayé en retirant la variable, et en mettant directement l’adresse MAC, ça n’a pas fonctionné…
Je ne comprends pas ce qui peut poser problème.
Niveau droits, je me suis pas cassé la tête : un chmod 777 sur les 2.
édit : vu qu’à la base, le script a été codé sous windows, j’avais évidement pensé à faire un dos2unix.

Peut-être qu’il n’aime pas l’underscore dans ton nom de variable.

Essaies de le mettre avec des accolades autour et dis nous ce qu’il en est.

J’avais déjà essayé en mettant l’adresse MAC directement à la place de la variable.

root@raspberrypi:/home/scripts# ./PCSalon.sh start ./PCSalon.sh: line 6: syntax error near unexpected token `wakeonlan' ./PCSalon.sh: line 6: `wakeonlan {$Mac_Address}'

Tu as mis le $ à l’intérieur des accolades, il faudrait le mettre à l’extérieur.
Là il te dit bien que c’est une erreur de syntaxe.

Edit: apparement l’appel de la variable $Mac_Address peut fonctionner… :unamused:
Edit2: ton message devrait plutôt se trouver dans la catégorie programmation
Edit3: Tu n’as pas besoin de quotes autour du contenu de ta variable?

[quote=“Chr0my”]
Edit2: ton message devrait plutôt se trouver dans la catégorie programmation[/quote]
Ou dans la partie bugs juste au dessus, je me suis trompé en allant trop vite je pense, désolé.

[quote=“Chr0my”]
Edit3: Tu n’as pas besoin de quotes autour du contenu de ta variable?[/quote]
J’ai essayé avec et sans, ça n’a rien changé.

Et si au lieu de mettre :

function nomdefonction{ ... }
Tu utilisais :

fonction() { ... }
?

Essaie aussi en remplaçant /bin/bash par /bin/sh

[quote=“thuban”]
Essaie aussi en remplaçant /bin/bash par /bin/sh[/quote]

Niquel! Je ne savais pas que sh et bash étaient différents.

Un grand merci à vous pour votre efficacité!

édit : je n’arrive pas à accepter la réponse. Probablement parce que je m’étais trompé d’endroit.

Je bascule dans “Programmation”;