You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

/bin/ash环境下实现两数值列表逐行相减并存储结果

Ash环境下无数组/临时文件的传感器数值修正方案

核心思路

利用Ash原生的for循环遍历空格分隔的字符串,结合eval动态生成变量存储对应位置的修正系数与计算结果,全程在内存中完成操作,无需临时文件或bash数组。

实现脚本

# 1. 将固定修正系数存入corr_1、corr_2...变量
i=1
for corr_val in $var2; do
    eval "corr_$i=$corr_val"
    i=$((i + 1))
done

# 2. 遍历动态传感器值,对应减去修正系数,存入delta_new_1、delta_new_2...
i=1
for sensor_val in $var1; do
    # 获取对应位置的修正系数
    eval "target_corr=\$corr_$i"
    # 整数差值计算(浮点需改用bc,见下方说明)
    delta=$((sensor_val - target_corr))
    # 存入结果变量
    eval "delta_new_$i=$delta"
    i=$((i + 1))
done

关键细节说明

  • 规避文件错误:全程仅通过内存变量读写操作,彻底避开NAND设备/tmp目录的权限、空间限制,解决之前的文件打开异常问题。
  • 替代bash数组:用eval动态生成带索引的变量名(如corr_1),模拟数组的索引访问逻辑,适配Ash无数组的环境限制。
  • 无需sed转换:直接通过for val in $var遍历空格分隔的元素,无需额外处理换行格式,兼容性更强。
  • 浮点值扩展:若传感器值为浮点数,将差值计算行替换为delta=$(echo "$sensor_val - $target_corr" | bc -l),依赖设备内置的bc工具即可。

内容的提问来源于stack exchange,提问作者j4ckpug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:26:12