Ви можете принаймні зберегти параметри частково у змінній:
opts=$(echo --{ignore-case,word-regexp,count,exclude='"sys*.*"'})
Тестування важливо, оскільки маскування може бути важким:
echo $opts
--ignore-case --word-regexp --count --exclude="sys*"
grep $opts bytes *.log
Оскільки існує декілька альтернатив, таких як використання історії, використання псевдоніма, використання функції, я не маю очевидних випадків використання, про які я можу придумати. Рідко існує складний варіант спільного доступу між різними програмами, тому для спеціального рішення інтерактивної оболонки псевдонім здається кращим способом:
alias cgrep='grep --ignore-case --word-regexp --count --exclude="sys*"'
cgrep bytes *.log
Ваш зразок
VAR=rsync -avz --{partial,stats,delete,exclude=".*"}
не може працювати, тому що призначення є ендетом на першому бланку. Ви повинні замаскувати заготовки:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
досить небезпечна річ для тестування, з цим варіантом - видалити, чи не так? Оскільки параметри можуть знову містити "," та одиничні лапки, маскування може скластись дуже швидко. Я б пішов на псевдонім або покладався на історію.
Псевдонім може бути збережений у файлі ~ / .bashrc для постійного використання протягом декількох сеансів. Функції можуть бути збережені і в bashrc, але вони вам потрібні лише, якщо ви хочете обробляти параметри, передані в функцію, яка оцінюється в ній.