Можно ли сделать что-то вроде следующего (и как?) (, Соответственно, почему нет.?):Использование переменных с несколькими вариантами в случае заявления
MATCH="--opt1 | --opt2"
while true ; do
case $1 in
$MATCH)
echo "option $2" found;
shift 2;;
*)
unknown option; exit 1;
esac
done
По причине я не понимаю, это не работает. Однако наличие только одной альтернативы, такой как MATCH = "- opt1", является прекрасным.
Edit 1: Возможное решение
Вместо того, чтобы идти с сазе можно было бы просто проверить, если данный вариант имеет место в череде множества доступных параметров, например, с помощью Grep и если. Для того, чтобы сделать это полным динамически один могло бы рассмотреть follwoing решения о, который может также в сочетании с или внедренным в сазе:
while true ; do
if [ -n "$(echo $MATCHES|grep -- $1)" ]; then
echo "found option $1 with value $2"
shift 2
fi
done
Хорошо. Таким образом, он соответствует только указанному параметру точно '' --opt1 | --opt2 "' – fedorqui
, что означает, что «Матч-предложение» не может быть создан в целом?! – user1240076
@ user1240076 Правильно. Ваш код становится более четким, если вы сохраняете данные и синхронизаторы/операторы отдельно. – chepner