Anda setidaknya bisa menyimpan sebagian opsi dalam variabel:
opts=$(echo --{ignore-case,word-regexp,count,exclude='"sys*.*"'})
Pengujian itu penting, karena menutupi bisa sulit:
echo $opts
--ignore-case --word-regexp --count --exclude="sys*"
grep $opts bytes *.log
Karena ada beberapa alternatif, seperti menggunakan riwayat, menggunakan alias, menggunakan fungsi, tidak ada use-case yang jelas yang bisa saya pikirkan. Jarang ada opsi berbagi yang rumit antara berbagai program, jadi untuk solusi ad-hoc untuk shell interaktif, aliasing tampaknya merupakan cara yang lebih baik:
alias cgrep='grep --ignore-case --word-regexp --count --exclude="sys*"'
cgrep bytes *.log
Sampel anda
VAR=rsync -avz --{partial,stats,delete,exclude=".*"}
tidak dapat bekerja, karena penugasan berakhir di kosong pertama. Anda harus menutupi yang kosong:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
hal yang cukup berbahaya untuk pengujian, dengan opsi --delete itu, bukan? Karena opsi dapat berisi lagi "," dan tanda kutip tunggal, masking bisa menjadi sangat sulit segera. Saya akan mencari alias atau mengandalkan sejarah.
Alias dapat disimpan dalam file ~ / .bashrc untuk digunakan terus menerus selama beberapa sesi. Fungsi dapat disimpan di bashrc juga, tetapi Anda hanya memerlukannya, jika Anda ingin menangani parameter, diteruskan ke fungsi yang akan dievaluasi di dalamnya.