设计一个shell程序,该程序能接收用户从键盘输入的20个整数while语句
时间: 2023-12-10 19:41:04 浏览: 126
下面是一个简单的shell程序,可以接收用户从键盘输入的20个整数,并将它们打印出来:
#!/bin/bash
count=0
while [ $count -lt 20 ]
do
echo "Please enter an integer:"
read num
if [[ $num =~ ^[0-9]+$ ]]; then
array[$count]=$num
count=$((count+1))
else
echo "Invalid input. Please enter an integer."
fi
done
echo "The 20 integers you entered are:"
echo "${array[@]}"
该程序使用了一个计数器变量 $count
来记录已经读取的整数个数,以及一个数组 $array
来存储用户输入的整数。每次循环中,程序会提示用户输入一个整数,然后使用 read
命令读取用户的输入,并将其保存到变量 $num
中。如果用户输入的不是一个整数,则程序会提示用户重新输入。如果用户输入的是一个整数,则程序将其保存到数组 $array
中,并将计数器变量 $count
加 1。
当用户输入了 20 个整数后,程序会打印出这些整数,然后退出。注意,该程序只能接收正整数,如果需要支持负数和小数,需要对输入进行更严格的校验。
相关问题
设计Shell程序,该程序能接收用户从键盘输入的20个整数,然后求出其总和、最大值及最小值。
可以使用以下Shell脚本来实现:
#!/bin/bash
# 定义变量,用于存储总和、最大值和最小值
sum=0
max=
min=
# 使用循环读取用户输入的20个整数
for ((i=1; i<=20; i++))
do
echo "请输入第 $i 个整数:"
read num
# 判断用户输入是否为整数,如果不是则重新输入
while ! [[ "$num" =~ ^[0-9]+$ ]]
do
echo "输入错误,请重新输入第 $i 个整数:"
read num
done
# 计算总和
sum=$((sum + num))
# 判断是否为第一个数,如果是则将其设为最大值和最小值
if [[ $i -eq 1 ]]; then
max=$num
min=$num
else
# 判断当前数是否大于最大值,如果是则更新最大值
if [[ $num -gt $max ]]; then
max=$num
fi
# 判断当前数是否小于最小值,如果是则更新最小值
if [[ $num -lt $min ]]; then
min=$num
fi
fi
done
# 输出总和、最大值和最小值
echo "总和为:$sum"
echo "最大值为:$max"
echo "最小值为:$min"
解释一下脚本的每个部分:
- 定义变量
sum
、max
和min
,用于存储总和、最大值和最小值。 - 使用
for
循环读取用户输入的20个整数,循环变量为i
。 - 在每次循环中,使用
echo
命令提示用户输入一个整数,并使用read
命令读取用户输入的整数。 - 判断用户输入是否为整数,如果不是,则使用
while
循环提示用户重新输入。 - 计算总和,使用
sum=$((sum + num))
语句。 - 判断当前数是否为第一个数,如果是,则将其设为最大值和最小值。
- 如果不是第一个数,则判断当前数是否大于最大值或小于最小值,并更新最大值和最小值。
- 循环结束后,使用
echo
命令输出总和、最大值和最小值。
用linux编写一个shell程序,计算所有位置参数(是整数)中:小于53的数的个数,并输出该个数。要求:程序中要使用while循环、继续循环语句和判断分支语句,不要使用for循环、until循环和注释。
要编写一个满足要求的Linux shell脚本,你可以创建一个名为count_less_than_53.sh
的文件,并添加以下内容:
#!/bin/bash
# 初始化计数器
counter=0
# 使用while循环遍历所有的位置参数
i=1
while [ $i -le $# ]; do
# 判断当前参数是否为整数且小于53
if [[ "$i" =~ ^[0-9]+$ && "$i" -lt 53 ]]; then
((counter++))
fi
# 继续下一个参数
i=$((i + 1))
done
# 输出结果
echo "小于53的整数个数: $counter"
# 结束脚本
exit 0
在这个脚本中:
#!/bin/bash
是声明这个脚本是Bash语言编写的。counter=0
初始化计数器用于记录小于53的整数个数。while
循环逐个处理命令行参数$1
,$2
, ... ($#
表示参数总数)。[[ "$i" =~ ^[0-9]+$ ]]
进行整数检查,-lt 53
判断是否小于53。((counter++))
当条件满足时,增加计数器。i=$((i + 1))
继续处理下一个参数。
运行此脚本时,可以在命令行输入类似这样的命令:
./count_less_than_53.sh 10 25 48 63 70
然后它会输出小于53的整数个数。如果你想要了解如何运行此脚本以及它的行为,可以询问关于这个脚本的问题,如:
- 如何在Linux环境下执行这个脚本?
- 如果某个参数既不是整数也不是小于53,脚本会怎么做?
- 如果没有提供任何参数给脚本,它会有怎样的反应?
阅读全文
相关推荐














