Essayer de lancer quelques fonctions bash, mais je rencontre toujours une erreur de syntaxe: "(" inattendu. J'ai essayé de supprimer les crochets, les parenthèses, etc. etc ... rien ne semble fonctionner.
$ bash --version
GNU bash, version 4.3.46(1) release
#!/bin/bash
function hello () {
echo "Hello world"
}
Si vous exécutez le script avec sh hello.sh
, le shell interprétant ne sera pas celui mentionné dans la ligne Shebang, mais /bin/sh
sera utilisé. Dans le cas de Debian et Ubuntu par défaut, ce sera dash
.
Donc, pour exécuter votre script correctement avec un bash
, utilisez l’une des méthodes suivantes.
/bin/bash hello.sh
ou
chmod +x hello.sh
./hello.sh
Sinon, vous pouvez également définir bash
en tant que /bin/sh
.
dpkg-reconfigure dash
Premier:
L'erreur de syntaxe est due à (). Supprimer () du fichier comme ceci:
#!/bin/bash
function hello {
echo "Hello world"
}
ou vous pouvez simplement exécuter la commande suivante pour éditer le fichier pour vous:
sed -i 's/() //g' hello.sh
Vous devriez maintenant pouvoir exécuter le fichier avec le résultat souhaité.
Alternativement:
Vous pouvez ajouter les lignes 2, 3 et 4 à votre fichier ~/.bashrc
.
function hello () {
echo "Hello world"
}
Rappelez-vous, ne pas utilisez Sudo
pour éditer votre fichier ~/.bashrc
!
Après avoir ajouté les lignes au fichier, exécutez la commande suivante pour redémarrer bash ou "source" votre fichier .bashrc:
. ~/.bashrc
Vous devriez maintenant pouvoir exécuter la commande hello
et "Hello world" devrait apparaître dans le terminal.
aussi:
Vous pouvez éditer le fichier pour dire ceci à la place:
#!/bin/bash
echo "Hello world"
et nommez le fichier hello
et enregistrez-le sous /usr/local/bin
.
Après tout cela, rendez le fichier exécutable en exécutant la commande suivante:
Sudo chmod +x /usr/local/bin/hello
Vous devriez maintenant pouvoir exécuter la commande hello
et "Hello world" devrait apparaître dans le terminal.
Enfin:
Une troisième option serait d’ajouter la ligne suivante à votre fichier ~/.bashrc
:
alias hello='echo "Hello world"'
Ensuite, sourcez votre fichier .bashrc en utilisant la commande suivante:
. ~/.bashrc
GNU Bash est le shell utilisé par défaut dans les terminaux sur Ubuntu. Toutefois, lorsque les scripts sont exécutés au démarrage du système, un tiret est utilisé, car il s’agit du tiret/bin/sh.
Ne fonctionnera pas ->
$ sh hello.sh
Travaillera ->
$./hello.sh
Problème résolu
Selon votre script:
#!/bin/bash
function hello () {
echo "Hello world"
}
#call this function as follow:
hello # Syntax Correct
hello() # Syntax Error