Essayer d'exécuter certaines fonctions bash, mais continue de rencontrer des erreurs 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"
}
Réponses:
Si vous exécutez le script avec
sh hello.sh
, le shell d'interprétation 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 le casdash
.Donc, pour exécuter votre script correctement avec un
bash
, utilisez l'une des méthodes suivantes.ou
Alternativement, vous pouvez également définir
bash
comme/bin/sh
.la source
Première:
L'erreur de syntaxe est due à (). Supprimer () du fichier comme ceci:
ou vous pouvez simplement exécuter la commande suivante pour modifier le fichier pour vous:
Vous devriez maintenant pouvoir exécuter le fichier avec le résultat souhaité.
Alternativement :
Vous pouvez ajouter les lignes 2, 3 et 4 à votre
~/.bashrc
fichier.N'oubliez pas, ne l' utilisez pas
sudo
pour éditer votre~/.bashrc
fichier!Après avoir ajouté les lignes au fichier, exécutez la commande suivante pour redémarrer bash ou "source" votre fichier .bashrc:
Vous devriez maintenant pouvoir exécuter la commande
hello
et "Hello world" devrait imprimer dans le terminal.Aussi:
Vous pouvez modifier le fichier pour dire ceci à la place:
et nommez le fichier
hello
et enregistrez-le dans/usr/local/bin
.Après avoir fait tout cela, rendez le fichier exécutable en exécutant la commande suivante:
Vous devriez maintenant pouvoir exécuter la commande
hello
et "Hello world" devrait imprimer dans le terminal.Finalement:
Une troisième option serait d'ajouter la ligne suivante à votre
~/.bashrc
fichier:Ensuite, sourcez votre fichier .bashrc à l'aide de la commande suivante:
la source
GNU Bash est le shell utilisé par défaut dans les terminaux sur Ubuntu. Cependant, lorsque les scripts sont exécutés au démarrage du système, le tiret est utilisé, car c'est le tiret qui est / bin / sh.
Ne fonctionnera pas ->
Fonctionnera ->
Problème résolu
la source
Selon votre script:
la source