Możesz przynajmniej zapisać opcje częściowo w zmiennej:
opts=$(echo --{ignore-case,word-regexp,count,exclude='"sys*.*"'})
Testowanie jest ważne, ponieważ maskowanie może być trudne:
echo $opts
--ignore-case --word-regexp --count --exclude="sys*"
grep $opts bytes *.log
Ponieważ istnieje wiele alternatyw, takich jak użycie historii, użycie aliasu, użycie funkcji, nie ma oczywistego przypadku użycia, o którym mogę myśleć. Rzadko zdarza się skomplikowana opcja udostępniania między różnymi programami, więc dla rozwiązania ad-hoc dla interaktywnej powłoki aliasing wydaje się lepszym sposobem:
alias cgrep='grep --ignore-case --word-regexp --count --exclude="sys*"'
cgrep bytes *.log
Twoja próbka
VAR=rsync -avz --{partial,stats,delete,exclude=".*"}
nie może działać, ponieważ przydział jest endet przy pierwszym pustym polu. Musisz zamaskować puste miejsca:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
dość niebezpieczna rzecz do testowania, z tą opcją - usuń, prawda? Ponieważ opcje mogą ponownie zawierać „,” i pojedyncze cudzysłowy, maskowanie może wkrótce stać się trudne. Wybrałbym alias lub polegał na historii.
Alias może być przechowywany w pliku ~ / .bashrc do ciągłego używania przez wiele sesji. Funkcje mogą być również przechowywane w bashrc, ale potrzebujesz ich tylko, jeśli chcesz obsłużyć parametry, przekazane do funkcji, która będzie w nich oceniana.