Bash 脚本:无输出;没有错误!

Bash 脚本:无输出;没有错误!

我正在测试以下代码,该代码旨在从用户那里获取输入,并在检查一些条件后将其存储到新变量中。但是,在 shell 终端中运行时,此代码没有给我任何输出或错误。我已通过 授予该文件执行权限sudo chmod +x test.sh

#!/bin/bash

counter="0"
iso_val="100"

while [ "$counter" == "3" ]
do
    echo -n "Enter ISO [ 100-800 ]: "; read iso
    if (( "$iso" < "100" )) || (( "$iso" > "800" )); then
        echo "Error!"
    elif [ "$iso" == "" ]; then
        echo "Error!"
    else
        iso_val=$iso
        break
    fi
    counter=$[$counter + 1]
done

答案1

您编写的脚本运行时没有错误,并且不会产生输出。

快速说明:您应该暂时添加到脚本set -x的开头,bash以便在调试时获得良好的开端。

问题在于这一行:

while [ "$counter" == "3" ]

该行后面的块仅在等于 时do才会运行,但除非运行该块,否则不会递增。$counter3$counterdo

您需要在您希望执行的块之外执行一些操作来增加计数器。 IE

#!/bin/bash

counter="0"
iso_val="100"

while [ "$counter" -lt 3 ]
do
    echo -n "Enter ISO [ 100-800 ]: "; read iso
    if [ -z "$iso" ] || [ "$iso" -lt 100 ] || [ "$iso" -gt 800 ]; then
        echo "Error!"
    else
        iso_val=$iso
        break
    fi
    counter=$(($counter + 1))
done

我设置了运行次数的限制while,否则脚本不会因错误而退出。我还尽可能将您的字符串比较更改为整数比较。

编辑:新脚本,其中包含注释中明确的要求,“错误时最多询问三次”

相关内容