bash erreur de Syntaxe: “(” inattendu
Pour quelque raison que cette fonction fonctionne correctement, le terminal est sortie
newbootstrap.sh: 2: Syntax error: "(" unexpected
Voici mon code (ligne 2 est la fonction MoveToTarget() {
)
#!/bin/bash
function MoveToTarget() {
#This takes to 2 arguments: source and target
cp -r -f "$1" "$2"
rm -r -f "$1"
}
function WaitForProcessToEnd() {
#This takes 1 argument. The PID to wait for
#Unlike the AutoIt version, this sleeps 1 second
while [ $(kill -0 "$1") ]; do
sleep 1
done
}
function RunApplication() {
#This takes 1 application, the path to the thing to execute
exec "$1"
}
#our main code block
pid="$1"
SourcePath="$2"
DestPath="$3"
ToExecute="$4"
WaitForProcessToEnd $pid
MoveToTarget $SourcePath, $DestPath
RunApplication $ToExecute
exit
Vous devez vous connecter pour publier un commentaire.
Vous utilisez la mauvaise syntaxe pour déclarer des fonctions. Utilisez ceci à la place:
Ou ceci:
Mais pas les deux.
Aussi, je vois que vous utilisez des virgules pour séparer les arguments (
MoveToTarget $SourcePath, $DestPath
). C'est aussi un problème. bash utilise des espaces pour séparer les arguments, pas des virgules. Supprimer la virgule et vous devriez être en or.sh
peut lien symbolique vers /bin/dash et vous devez l'exécuter en tant quebash
.function MoveToTarget() { ...
.Je suis aussi nouveau pour définir des fonctions dans les scripts bash. Je suis à l'aide d'un bash de version 4.3.11(1):-la libération (x86_64-pc-linux-gnu) sur Ubuntu 14.04.
Je ne sais pas pourquoi, mais la définition qui commence avec le mot-clé
function
ne fonctionne jamais pour moi.Une définition comme suit
produit le message d'erreur:
Si je mets de la
{
à une nouvelle ligne comme:Il imprime un
Hello.
quand je lance le script, même si je n'ai pas l'appel de cette fonction, et c'est aussi ce que nous voulons.Je ne sais pas pourquoi cela ne fonctionne pas car j'ai aussi regardé de nombreux tutoriels et ils mettent tous l'ouvrir accolade à la fin de la première ligne. C'est peut-être la version de bash que nous utilisons?? De toute façon, il suffit de le mettre ici pour votre information.
J'ai utiliser le C-style de définition de la fonction:
et il fonctionne comme prévu.
J'ai eu le même problème. J'ai été l'exécution de scripts sur Ubuntu parfois à l'aide de sh vs dash. Semble l'exécution de scripts sh à l'origine du problème, mais l'exécution de scripts avec dash, beau travail.