设计一个shell程序计算n的阶乘。要求: (1) 从命令行接收参数n; (2) 在程序开始后立即判断n的合法性,即是否有参数,若有是否为正整数,若非法请给
时间: 2024-03-09 09:46:16 浏览: 301
编程求n的阶乘。要求:程序运行时,输入正整数n,求123...(n-1)n的值并输出
出提示并退出程序; (3) 计算n的阶乘并输出结果。
以下是实现该功能的一种可能的shell程序:
```bash
#!/bin/bash
# 检查参数是否合法
if [ $# -ne 1 ] || ! [[ $1 =~ ^[1-9][0-9]*$ ]]; then
echo "Usage: $0 n (n should be a positive integer)"
exit 1
fi
# 计算阶乘
n=$1
fact=1
for ((i=1; i<=n; i++)); do
fact=$((fact * i))
done
# 输出结果
echo "$n! = $fact"
```
该程序首先检查命令行参数是否合法,如果不合法则输出提示并退出程序。如果命令行参数合法,则使用循环计算n的阶乘,并输出结果。注意,这里使用`$#`表示命令行参数的个数,`$1`表示第一个命令行参数,`=~`表示正则表达式匹配,`^[1-9][0-9]*$`表示以1到9之间的数字开头,后面可以跟0到多个数字,即正整数的正则表达式。
阅读全文