Bash shell 脚本程序,提示并读取用户的两个整数。

Bash shell 脚本程序,提示并读取用户的两个整数。

好吧,我已经尝试解决这个问题有一段时间了,但我发现了左右错误。这是我第一次尝试学习基础知识。所以任何建议都会有帮助!

问题:我正在尝试编写一个 Bash shell 脚本程序,提示并读取用户的两个整数。假定第二个参数大于第一个参数。程序的输出是从第一个数字开始到第二个数字结束的数字计数。

换句话说,输出将如下所示:

    Please enter the first number:
    3
    Please enter the second number, larger than the first:
    6

    3
    4
    5
    6

好了,这就是我目前掌握的情况了~

    read -p "Please Enter the first number : " n1
     echo "$n1"
   read -p "Please Enter the second number, larger than the first : " n2
     echo "$n2"
   FIRSTV=0
   SECONDV=1
   if [ 1 -gt 0]
   then
   count=$((FIRSTV-SECONDV))
   echo $COUNT
   fi

答案1

如果你可以使用seq,你可以这样做:

read -p "Please Enter the first number : " n1
echo "$n1"
read -p "Please Enter the second number, larger than the first : " n2
echo "$n2"

seq "$n1" "$n2"

如果您必须完全在 shell 中执行此操作并且可以使用现代 shell,如bashkshzsh(但不能使用ashdash或类似的严格 POSIX shell),则可以将seq命令替换为:

eval "printf '%s\n' {$n1..$n2}"

您需要使用eval第二个版本,因为 bash/ksh/etc 序列期望像 那样的实际整数{1..5},而不是像 那样的变量{$n1..$n2}eval扩展变量,以便在{...}序列内使用它们的实际值。

如果您想使用循环来执行此操作并且没有花哨的 bash/ksh/etc 功能,您可以将seqeval行替换为以下内容:

c="$n1"

while [ "$c" -le "$n2" ] ; do
    echo "$c"
    c=$((c+1))
done

这适用于任何 POSIX 兼容的 shell,包括dashashbash

相关内容