Linux中编写Shell 脚本,输人一个数字n并计算1~n的和。要求:如果输入的数字小于1,则重新输人,直到输人正确的数字为止。
时间: 2024-02-27 13:55:45 浏览: 70
好的,这是一个简单的Shell脚本,可以实现你的要求:
```bash
#!/bin/bash
while true; do
read -p "请输入一个大于等于1的数字n:" n
if [[ "$n" =~ ^[1-9][0-9]*$ ]]; then
break
else
echo "输入有误,请重新输入!"
fi
done
sum=0
for (( i=1; i<=n; i++ )); do
sum=$((sum+i))
done
echo "1到$n的和为:$sum"
```
脚本的执行过程如下:
1. 进入while循环,要求用户输入一个大于等于1的数字n。
2. 使用read命令读取用户的输入,并将其存储到变量n中。
3. 使用正则表达式判断n是否为一个大于等于1的数字。如果不是,则输出错误提示,并重新进入while循环等待用户重新输入;如果是,则跳出while循环,进入下一步。
4. 初始化变量sum为0。
5. 使用for循环计算1到n的和,并将结果存储到变量sum中。
6. 输出结果。
希望以上代码能够帮到你。
相关问题
编写shell脚本,输入一个数字n并计算1~n的和。要求:如果输入的数字小于1,则重新输入,知道输入正确的数字为止
很高兴为您服务!对于您的第一个问题,我可以提供以下的Shell脚本代码:
```
#!/bin/bash
sum=0
echo "请输入一个数字n:"
read n
while (( n < 1 ))
do
echo "输入错误!请重新输入一个数字n:"
read n
done
for (( i=1; i<=n; i++ ))
do
sum=$(( sum + i ))
done
echo "1到$n的和为:$sum"
```
请注意:这段代码需要在 Linux 或 Mac OS 系统下运行,Windows系统可能会因为语法问题而报错。另外,以上代码仅供参考,如果您有更好的实现,也欢迎分享。
linux:编制Shell 程序,从键盘输入一个数n,如果输入的数字小于1,则重新输入,直到输入正确的n,然后计算1!+2!+…+(n-1)!+n!。
编写一个Shell脚本来实现这个功能,你可以使用循环结构和`factorial`函数来计算阶乘。以下是一个简单的bash脚本示例:
```bash
#!/bin/bash
# 定义阶乘函数
factorial() {
if [ $1 -eq 0 ] || [ $1 -eq 1 ]; then
echo 1
else
local result=$(( $1 * $(factorial $(( $1 - 1 ))) ))
echo $result
fi
}
# 从用户那里获取输入并检查是否有效
while true; do
read -p "请输入一个正整数n: " n
if [[ $n =~ ^[0-9]+$ ]] && [ $n -ge 1 ]; then
break
else
echo "输入错误,请输入一个大于等于1的整数。"
fi
done
# 计算阶乘之和
sum=0
for ((i=1; i<=$n; i++)); do
sum=$(( sum + $(factorial $i) ))
done
echo "1! + 2! + ... + ($n-1)! + $n! 的结果是: $sum"
#
阅读全文