Как насчет функции оболочки, завершающей цикл?
yourcmd() {
local arg
for arg; do
thing "$arg" || return
done
}
Где «вещь» - это фактическая команда, которую вы хотите вызвать. Затем просто
yourcmd -a -b -c
Вы можете даже обобщить это на любую команду:
splitargs() {
local cmd arg
cmd="$1"
shift
for arg; do
"$cmd" "$arg" || return
done
}
Затем
splitargs somecommand -a -b -c
Разделитель документа здесь должен быть строкой с разделителями в псевдониме вzsh
(это выглядит как ошибка, поскольку вы добавляете этот разделитель при нажатии клавиши ввода ), поэтому:
alias runthing='cd; date << HERE
date
HERE
'
Однако здесь использование псевдонима является неправильным. Рассмотрим, например,:
echo foo || runthing
Поскольку alias
— это просто форма замены текста кода, (псевдонимы — это прежде всего функция csh, csh не имеет функций ), это становится
echo foo || cd; date...
Это означает, что date
будет запущен, даже если echo
был успешным.
Здесь лучше использовать функцию:
runthing() {
cd && date << EOF
date
EOF
}
(конечно, не имеет большого смысла скармливать heredoc date
, учитывая, что date
не читает свой стандартный ввод, я просто предполагаю, что это было только для примера ).