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-me
nella 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 > file1
lo script ed eseguirlo./it
, e poienv > file2
esource it
, nella speranza che avrei trovato una differenza nellaenv
s, che non è il caso. Come posso elencare a livello di programmazione tutta la differenza tra due shell (in questo caso interattivo vs non interattivo)?