-(대시)로 시작하는 if 문의 glob 패턴을 일치시키려면

-(대시)로 시작하는 if 문의 glob 패턴을 일치시키려면

if 문에서 "--debug"를 일치시킬 수 없습니다.
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";

관련 정보