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