J'ai un script tout bête qui contient entre autre ça:
#!/bin/bash
# d'autres lignes...
cd python/lib/python3.8 && rm -rfv !("site-packages")
Je peux copier-coller cette ligne dans un terminal bash ou elle s'exécutera correctement, par contre en lançant ./script.sh j'obtiens l'erreur suivante:
./script.sh: ligne 24: erreur de syntaxe près du symbole inattendu « ( »
Que faire ?
# dash
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
Tu es sur de ton shebang ? Ce ne serait /bin/sh par hasard et tu pourrais être sous dash (Debian et dérivée).
En tout cas, je ne connaissais pas l'astuce !() pour exclure un fichier. Intéressant.
[^] # Re: dash
Posté par mr_maurice . Évalué à 1.
Si je tape /bin/bash, j'arrive bien sur un terminal dans lequel je peux exécuter la ligne en question.
[^] # Re: dash
Posté par David Marec . Évalué à 9. Dernière modification le 12 février 2020 à 13:05.
Il faut activer dans le script, l'option qui autorise cette syntaxe (
Pathname Expansion
):Ce serait mieux, AMHA, avec un
find
, plutôt qu'uncd+rm
[^] # Re: dash
Posté par mr_maurice . Évalué à 1.
Merci !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.