Вы можете по крайней мере частично сохранить параметры в переменной:
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=".*"}
не может работать, потому что назначение является endet в первом пробеле. Вы должны замаскировать пробелы:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
довольно опасная вещь для тестирования, с этой опцией --delete, не так ли? Поскольку параметры могут содержать снова "," и одинарные кавычки, маскирование может стать очень трудным в ближайшее время. Я бы пошел за псевдоним или полагаться на историю.
Псевдоним может быть сохранен в файле ~ / .bashrc для непрерывного использования в течение нескольких сеансов. Функции также могут быть сохранены в bashrc, но они вам нужны, только если вы хотите обработать параметры, переданные в функцию, которая будет оценена в них.