Posso eseguire questo comando dal mio prompt della riga di comando:
cp -r folder/!(exclude-me) ./
Copia ricorsivamente tutto il contenuto di folder tranne la sottodirectory indicata exclude-menella directory corrente. Funziona esattamente come previsto. Tuttavia, ho bisogno di questo per funzionare in uno script bash che ho scritto, dove ho questo:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
Ma quando eseguo lo script:
bash my-script.sh
Capisco questo:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
E non riesco a capire perché funzioni dal prompt dei comandi, ma la stessa identica riga non funziona in uno script bash.
env > file1lo script ed eseguirlo./it, e poienv > file2esource it, nella speranza che avrei trovato una differenza nellaenvs, che non è il caso. Come posso elencare a livello di programmazione tutta la differenza tra due shell (in questo caso interattivo vs non interattivo)?