【发布时间】:2016-10-05 06:27:19
【问题描述】:
以下 bash 脚本接受 0-100 之间的任何数字输入,并将这些数字的平均值打印到屏幕上。该脚本还具有输入验证,除了 0-100 和 q 或 Q 之间的数字外,不允许任何其他内容。一旦输入 q 或 Q,它就会计算结果并输出到屏幕。输入验证还检查以确保没有输入空值、输入特殊字符以及没有输入数字/字母组合、特殊字符/数字组合等。
我唯一的问题是反斜杠字符。反斜杠在此脚本中被转义,当我运行脚本并输入反斜杠时,它会暂停并要求您按回车键以继续脚本。似乎脚本仍然有效,但我很好奇它为什么会暂停。我在这个网站上看到的大多数建议都是用更多的反斜杠来转义反斜杠,但这不起作用。
#! /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."
【问题讨论】:
-
我还如何让它检查任何字母数字条目并提示他们重新输入?