コマンドラインで提供されているオプションに基づいて '昨日'または '明日'のいずれかを出力するシェルスクリプトを実行したいとします。オプションが-yの場合、出力は 'yesterday'、そうでない場合は 'tomorrow'です。さらに、スクリプトの構文を表示するオプションhelp -hを追加したいと思います。オプションの有無にかかわらずシェルスクリプトを実行する
私は、スクリプトを作った:
#! /bin/bash
h= y=
while getopt :f:vql opt
do
case $opt in
y) setday=true
;;
h) tohelp=true
;;
esac
done
shift $((OPTIND - 1))
if [setday=true]
NAME=$yesterday
else
NAME=$tomorrow
fi
if [tohelp=true]
MSG=$'runner [-y]'
echo $NAME
echo $MSG
が、私はそれを実行したとき、私は単に私が間違って取得しています何
-- opt
-- opt
-- opt
etc
を印刷し、無限ループを取得しますか?
[shellcheck.net]でスクリプトを貼り付けてください(http://shellcheck.net)に'['、 ']'や '='の周囲に空白がないなどの基本的な問題があります。 – mklement0