Я не могу сопоставить "--debug" в операторе if.
Я нацеливаюсь на скрипт, совместимый с POSIX.
CHANNELS=;
set -- stable beta dev master --debug
echo "DEBUG: Before while $@";
while [ $# -gt 0 ]; do
echo "DEBUG: Inside while $1";
if [ ! $1 = -* ]; then
echo "DEBUG: Inside if $1";
CHANNELS="$CHANNELS $1";
fi
shift;
done
echo "DEBUG: After while $CHANNELS";
Фактический -> $CHANNELS имеет "stable beta dev master --debug"
Ожидаемый -> $CHANNELS должен иметь "stable beta dev master"
решение1
Сопоставление с образцом выполняется с помощью case
конструкции в оболочках POSIX:
CHANNELS=
set -- stable beta dev master --debug
echo "DEBUG: Before while $@";
while [ "$#" -gt 0 ]; do
echo "DEBUG: Inside while $1";
case $1 in
(-*) ;;
(*)
echo "DEBUG: Inside case (*)"
CHANNELS="$CHANNELS $1";;
esac
shift
done
echo "DEBUG: After while $CHANNELS";