%20%E3%81%A7%E5%A7%8B%E3%81%BE%E3%82%8B%20glob%20%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%92%E4%B8%80%E8%87%B4%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF.png)
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";