学习了这么长时间Shell脚本,总得来一次小小的练习吧,那么请看下文!
1.用Shell写一个小计算器。
通过read
命令获取用户输入的表达式,表达式的格式设定为操作数1 运算符 操作数2
,例如5+3
,然后利用设计的脚本输出运算结果。
要求:实现加、减、乘、除运算
#!/bin/bash
echo "请输入表达式(格式:操作数1 运算符 操作数2,例如 5 + 3):"
read expr
result=$(echo "$expr" | bc)
echo "运算结果是:$result"
输出:
#!/bin/bash
表示使用 Bash 解释器来运行该脚本。**
read expr
**:读取用户输入的数学表达式,并将其存储到变量expr
中。**
result=$(echo "$expr" | bc)
**:将用户输入的表达式$expr
通过管道传递给bc
工具,计算结果并存储在result
变量中。**
echo "运算结果是:$result"
**:输出运算结果。
2.用Shell定义一个求n的阶乘函数
定义一个计算n的阶乘的函数(含参函数、if判断、for循环)
写一个脚本去调用在(三、封装函数)中写的求阶乘的函数,并定义一个变量n可用read交互输入,最终输出n的阶乘
结果:
#!/bin/bash
echo "请输入一个数字:"
read num
echo "您输入的数字是:$num"
# 计算阶乘
result=1
for i in $(seq 1 $num);
do
result=$((result * i))
done
echo "$num 的阶乘是:$result"
输出:
read num
:read
命令用于从标准输入读取数据,将输入的内容存储到变量num
中。在这个脚本中,用户会输入一个数字,read
命令把它保存在num
变量里。使用seq命令生成从1到$num的序列。用for循环进行遍历每个数字,每次循环时,会将result与当前的i相乘,逐步计算阶乘
3.拓展:
- 写一个Shell脚本去筛选出eth0网卡的ipv4地址,并赋值一个变量输出(可以去了解grep、awk文本处理工具)
结果:
#!/bin/bash
# 获取 eth0 网卡的 IPv4 地址
ip_address=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')
# 输出结果
echo "eth0 网卡的 IPv4 地址是:$ip_address"
输出: