そのため、bash スクリプトをセットアップしていて、getopts を使用して特定のフラグへの引数を解析したいと考えています。最小限の例として、フラグ -M があり、y または n を引数として取るスクリプトを考えてみましょう。次のコードを使用する場合:
#!/bin/bash
# minimalExample.sh
while getopts "M:" OPTION;
do
case ${OPTION} in
M)
RMPI=${OPTARG}
if ! [[ "$RMPI" =~ "^[yn]$" ]]
then
echo "-M must be followed by either y or n."
exit 1
fi
;;
esac
done
私は以下を取得します:
$ ./minimalExample.sh -M y
-M must be followed by either y or n.
FAIL: 1
ただし、代わりに次のコードを使用すると
#!/bin/bash
# minimalExample2.sh
while getopts "M:" OPTION;
do
case ${OPTION} in
M)
RMPI=${OPTARG}
if [ -z $(echo $RMPI | grep -E "^[yn]$") ]
then
echo "-M must be followed by either y or n."
exit 1
else
echo "good"
fi
;;
esac
done
私は得る:
$ ./minimalExample2.sh -M y
good
なぜ機能しないminimalExample.sh
のですか?