一部のソフトウェアを実行するために必要なファイルを作成するスクリプトに入力がありますが、ソフトウェアはLOとLDOの2つの可能なオプションのうちの1つのみを受け入れます。
私が書いた入力は下のコードの上にあり、下のコードは私が行うように提案されています。
「Overlap(LO or LDO):」という質問をしたいのですが、いずれかのオプションが入力されていない場合はエラーメッセージが表示され、スクリプト全体をやり直すのではなく、手順を繰り返します。 0と0の値9
私が知っている限り、LOとLDOを含めるには^ [0-9]を変更する必要がありますが、句読点が何であるか、どうすればよいかわかりません。
### My Script ###
read -p "Overlap (LO or LDO): " OVERLAP
### Recommended Script ###
#!bin/bash
number=""
while [[ ! $number =~ ^[0-9]+$ ]]; do
echo Please enter your age
read number
done
echo You are $number years old
ベストアンサー1
入力および検証ループは通常、次のように作成されます。
while true; do
read -p 'Overlap (LO or LDO): ' overlap
case $overlap in
LO|LDO) # ok
break
;;
*) # not ok
echo 'Please enter LO or LDO' >&2
esac
done
つまり、答えが正しいことを確認すると、無限ループが壊れることになります。
明らかにあなたもできます
while true; do
read -p 'Overlap (LO or LDO): ' overlap
if [ "$overlap" = LO ] || [ "$overlap" = LDO ]; then
# ok
break
fi
# not ok
echo 'Please enter LO or LDO' >&2
done
または、次の機能を備えたシェルを使用してくださいselect
。
echo 'Select overlap:' >&2
select overlap in LO LDO; do
case $REPLY in
[12]) # ok
break
;;
*) # not ok
echo 'Please select LO or LDO' >&2
esac
done