Saya dapat menjalankan perintah ini dari prompt baris perintah saya:
cp -r folder/!(exclude-me) ./
Untuk secara rekursif menyalin semua konten folder kecuali untuk subdirektori yang disebutkan exclude-medalam direktori saat ini. Ini berfungsi persis seperti yang dimaksudkan. Namun, saya perlu ini bekerja dalam skrip bash yang saya tulis, di mana saya memilikinya:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
Tetapi ketika saya menjalankan skrip:
bash my-script.sh
Saya mendapatkan ini:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
Dan saya bingung mengapa itu bekerja dari command prompt, tetapi baris yang sama persis tidak bekerja dalam skrip bash.
env > file1skrip dan mengeksekusi./it, dan kemudianenv > file2dansource it, dengan harapan bahwa saya akan menemukan perbedaan dalamenvs, yang tidak terjadi. Bagaimana saya bisa secara program mencantumkan semua perbedaan antara dua shell (dalam hal ini interaktif vs non-interaktif)?