Para hacer coincidir patrones globales en una declaración if que comienza con - (guión)

Para hacer coincidir patrones globales en una declaración if que comienza con - (guión)

No puedo hacer coincidir "--debug" en la declaración if.
Mi objetivo es un script compatible con 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";

Real -> $CHANNELS tiene "maestro de desarrollo beta estable --debug"
Esperado -> $CHANNELS debería tener "maestro de desarrollo beta estable"

Respuesta1

La coincidencia de patrones se realiza con la caseconstrucción en shells 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";

información relacionada