编写Bash脚本:基于多组读数判断数值型变量的增减趋势
Bash脚本实现数值变量变化监测
没问题,咱们来写一个符合需求的Bash脚本!核心逻辑就是先获取10组数值,然后逐个对比相邻的两个数值,判断当前是增长、持平还是下降状态。
完整脚本示例
#!/bin/bash # 设置要获取的读数数量 read_count=10 # 初始化前一个数值变量 prev_val="" echo "开始监测数值变化,共获取${read_count}组读数:" for ((i=1; i<=read_count; i++)); do # -------------------------- # 这里替换成你实际获取数值的命令 # 示例:从文件读取、命令输出(比如cat /proc/xxx)、随机数模拟 curr_val=$((RANDOM % 10 + 1)) # -------------------------- echo "第${i}组读数:${curr_val}" # 从第二组开始对比状态 if [[ $i -gt 1 ]]; then if [[ $curr_val -gt $prev_val ]]; then echo " 状态:*增长*" elif [[ $curr_val -eq $prev_val ]]; then echo " 状态:*持平*" else echo " 状态:*下降*" fi fi # 更新前一个数值为当前值,用于下一次对比 prev_val=$curr_val # 如果需要模拟间隔,比如每1秒获取一次,可以加下面这行 # sleep 1 done
关键部分说明
- 数值获取:脚本里用
$((RANDOM % 10 + 1))生成1-10的随机数模拟读数,你需要把这行替换成实际获取目标数值的命令(比如读取某个传感器输出、日志里的数值等)。 - 状态判断:从第二组读数开始,用
if-elif-else对比当前值和前一组值,分别输出对应的状态,并用*强调状态文字。 - 循环控制:通过
for ((i=1; i<=read_count; i++))实现10次读数的获取,你可以修改read_count变量调整读数数量。
注意事项
- 如果你的数值可能包含小数,需要把整数比较(
-gt/-eq/-lt)换成浮点比较,比如用bc工具:if (( $(echo "$curr_val > $prev_val" | bc -l) )); then echo " 状态:*增长*" elif (( $(echo "$curr_val == $prev_val" | bc -l) )); then echo " 状态:*持平*" else echo " 状态:*下降*" fi - 建议添加数值合法性检查,确保获取到的是有效数字,避免脚本报错:
if ! [[ $curr_val =~ ^[0-9]+(\.[0-9]+)?$ ]]; then echo " 警告:获取到非数值内容,跳过本次对比" prev_val="" continue fi
内容的提问来源于stack exchange,提问作者user9808032
相关产品推荐
相关产品推荐

