2.使用Bourne shell编写一段程序脚本,完成以下功能: 用户输入若干(最多9个)个数字,求用户所输入的所有数字的平均数。
时间: 2024-02-27 22:55:17 浏览: 75
好的,以下是Bourne shell编写的程序脚本,可以实现求用户输入的数字的平均数:
```
#!/bin/sh
echo "请输入数字,最多9个,以空格分隔:"
read -a nums
sum=0
for num in "${nums[@]}"; do
sum=$((sum+num))
done
count=${#nums[@]}
avg=$(echo "scale=2; $sum/$count" | bc)
echo "平均数为:$avg"
```
程序首先提示用户输入数字,然后使用`read`命令读取用户输入的一行数字,使用`-a`选项将输入的数字转为数组,最多9个数字。
程序接着使用循环遍历数组,计算所有数字的总和。
然后,程序计算输入数字的个数,使用`bc`命令计算平均数,并将结果保留两位小数。
最后,程序输出平均数。
相关问题
(1) 实验内容要求 1.掌握一些高级的Bourne shell程序语句。 2.使用Bourne shell编写一段程序脚本,完成以下功能: 用户输入若干(最多9个)个数字,求用户所输入的所有数字的平均数。 (2) 实验结果 该程序代码如下:
以下是 Bourne shell 编写的求平均数的脚本程序:
```sh
#!/bin/sh
# 提示用户输入数字
echo "请输入数字,最多输入9个,以空格分隔:"
# 读取用户输入的数字,使用空格作为分隔符
read -a numbers
# 计算数字个数和总和
count=0
sum=0
for number in "${numbers[@]}"; do
if [ -n "$number" ]; then
count=$((count + 1))
sum=$((sum + number))
fi
done
# 计算平均数
if [ "$count" -gt 0 ]; then
average=$(echo "scale=2; $sum / $count" | bc)
echo "平均数为:$average"
else
echo "没有输入数字!"
fi
```
这个脚本程序首先提示用户输入数字,并使用 `read` 命令读取用户输入的数字,存储在名为 `numbers` 的数组中。
接下来,使用 `for` 循环遍历数组中的每个数字,计算数字个数和总和。需要注意的是,由于用户输入的数字可能包含空格,因此需要使用 `if` 判断当前数字是否为空。
最后,如果数字个数大于 0,则计算平均数,并输出结果。否则,输出提示信息。
需要注意的是,在计算平均数时,使用了 `bc` 命令来进行小数运算,并使用 `echo` 命令来进行输出。`scale=2` 表示精确到小数点后两位。
linuxshell脚本的编写
### 编写 Linux Shell 脚本示例教程
#### 了解 Shell 和其作用
Shell 是用户与操作系统内核之间的接口,允许用户通过命令行输入来控制操作系统。作为命令解释器,Shell 读取用户输入的命令并执行相应操作。此外,Shell 提供了强大的脚本编程能力,能够自动化许多任务。常见类型的 Shell 包括 Bash(Bourne Again Shell)、Zsh(Z Shell)以及 Ksh(Korn Shell)等[^1]。
#### 创建简单的 Shell 脚本文件
创建一个新的文本文件用于编写 Shell 脚本。通常情况下,这些文件会有一个 `.sh` 的扩展名。例如:
```bash
touch myscript.sh
chmod +x myscript.sh
```
这将创建名为 `myscript.sh` 的可执行文件。
#### 添加 Shebang 行
在任何有效的 Shell 脚本顶部都应包含 shebang (`#!`) 行,指明该脚本应该由哪个解释程序处理。对于大多数情况而言就是 `/bin/bash` 或者其他指定路径下的 shell 解释器。比如,在上面提到的例子中,可以在文件开头加入如下内容:
```bash
#!/bin/bash
```
#### 编写实际功能代码
接下来就可以开始编写具体的逻辑实现部分了。这里给出一个简单例子:检查给定的服务名称对应进程是否存在,并返回适当的消息提示。
```bash
#!/bin/bash
result=$(pidof "$1" | wc -l)
echo "${result}"
if [[ ${result} -eq 0 ]]; then
echo "Service does not exist!"
else
echo "Service is running normally."
fi
```
这段代码接收一个参数 `$1` ,即要查询的服务名字;利用 `pidof` 命令查找匹配此服务名的所有 PID 并统计数量存入变量 `result`; 接着判断这个数值是否等于零从而决定输出什么信息[^2]。
#### 测试和完善脚本
完成初步编码之后,应当多次测试以确保预期行为正确无误。可以通过向脚本传递不同形式的数据来进行验证,如有效/无效的服务名称、空字符串或其他异常情形。根据反馈调整优化直至满意为止。
阅读全文