Je peux exécuter cette commande à partir de mon invite de ligne de commande:
cp -r folder/!(exclude-me) ./
Pour copier récursivement tout le contenu de l' folder exception du sous-répertoire nommé exclude-medans le répertoire courant. Cela fonctionne exactement comme prévu. Cependant, j'ai besoin de cela pour travailler dans un script bash que j'ai écrit, où j'ai ceci:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
Mais quand j'exécute le script:
bash my-script.sh
J'ai compris:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
Et je ne sais pas pourquoi cela fonctionne à partir de l'invite de commande, mais la même ligne exacte ne fonctionne pas dans un script bash.
env > file1dans le script et de l'exécuter./it, puisenv > file2etsource it, dans l'espoir que j'aurais trouvé une différence dans leenvs, ce qui n'est pas le cas. Comment puis-je lister par programme toute la différence entre deux shells (dans ce cas interactif vs non interactif)?