Shell 脚本 - 具有两个变量的双重条件

Shell 脚本 - 具有两个变量的双重条件

早上好各位,

我必须在课堂作业中这样做,但我不太清楚如何做。

该脚本将要求用户提供两个单独的语句,这两个语句将填充两个变量 L 和 C。我需要检查 L 和 C 是否都在 1 到 3 的范围内。如果 L 或 C 的值低于1 和/或高于 3(超出范围),脚本必须打印警告并要求新值。

printf "Please, enter L and C: "
read L C
while [[ $L -ge 1 -a $L -le 3 ]]; do
    while [[ $C -ge 1 -a $C -ge 3 ]]; do

这按预期工作(循环)。有什么办法可以更好地处理这个问题吗?

谢谢,

拉斐尔

答案1

为了可读性,我会做类似的事情:

checkrange() {
   if [[ "$1" -le 3 ]] && [[ "$1" -ge 1 ]]; then
      return 0
   else
      return 1
   fi
}

L=0
C=0
prompt="Please enter values for L and C >"
while ! ( checkrange "$L" && checkrange "$C" ); do
   read -p "$prompt" L C
   prompt="Invalid input; please enter new values for L and C >"
done

相关内容