次のbashスクリプトは、0から100までの任意の数字を入力し、数字の平均を画面に表示します。このスクリプトには、0-100とqまたはQの間の数値以外は許可されない入力検証もあります。qまたはQを入力すると、結果が計算されて画面に出力されます。また、入力検証では、入力されたヌル値、特殊文字が入力されていないこと、および数字/文字の組み合わせ、特殊文字/数字の組み合わせなどが入力されていないことを確認します。このbashスクリプトでバックスラッシュをエスケープしよう
私が持つ唯一の問題は、バックスラッシュ文字です。このスクリプトではバックスラッシュがエスケープされています。スクリプトを実行してバックスラッシュを入力すると、スクリプトは一時停止し、スクリプトを続けるためにリターンを押す必要があります。スクリプトのように見えますが、なぜそれが一時停止するのか不思議です。このサイトで私が見てきた推奨事項の多くはバックスラッシュをバックスラッシュでエスケープしていましたが、それはうまくいきません。
#! /bin/bash
AVERAGE="0"
SUM="0"
NUM="0"
clear
while true; do
echo -n "Enter your score [0-100%] ('q' for quit): "; read SCORE;
if [[ "$SCORE" == *[a-pA-pr-zR-Z]* ]] ||
[[ "$SCORE" == *['!'\\@#\$%^\&*()_+~\`\-=\[\]\{\}\|:\;\'\"\<\>,.?/\\]* ]] ||
[[ -z "$SCORE" ]] ||
(("$SCORE" < "0")) || (("$SCORE" > "100"))
then
echo "Be serious. Come on, try again: "
elif [[ "$SCORE" == [qQ] ]]; then
echo "Average rating: $AVERAGE%."
break
else
SUM=$[$SUM + $SCORE]
NUM=$[$NUM + 1]
AVERAGE=$[$SUM/$NUM]
fi
done
echo "Exiting."
また、英数字の入力を確認して再入力する方法もありますか? –