if 문에서 -(대시)로 시작하는 전역 패턴과 일치합니다.

if 문에서 -(대시)로 시작하는 전역 패턴과 일치합니다.

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

패턴 일치는 casePOSIX 셸의 구성을 통해 수행됩니다.

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";

관련 정보