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

如何用bash单次执行sas2ircu读取匹配项写入enc、slot数组

实现方案

你可以通过单次调用sas2ircu+awk暂存匹配值的逻辑,一次性输出所有就绪硬盘的enclosure和slot编号,再写入对应数组,参考代码如下:

# 初始化空数组
enc=()
slot=()

# 仅执行一次sas2ircu,过滤数据后逐行写入数组
while read -r enc_id slot_id; do
    enc+=("$enc_id")
    slot+=("$slot_id")
done < <(/root/sas2ircu 0 display | awk '
# 匹配到Enclosure行时暂存编号
/Enclosure #/{ cur_enc = $NF }
# 匹配到Slot行时暂存编号
/Slot #/{ cur_slot = $NF }
# 匹配到就绪状态时输出暂存的两组编号
/State.*RDY/{ print cur_enc, cur_slot }
')

实现逻辑

  1. awk 逐行解析sas2ircu的输出,按顺序暂存每块盘的Enclosure和Slot编号
  2. 当识别到带RDY标识的就绪状态行时,将暂存的对应编号输出,每行对应一块就绪硬盘
  3. bash 侧通过while read循环逐行读取awk输出的两组值,分别追加到enc和slot数组中

执行完成后你可以通过echo ${enc[@]}和echo ${slot[@]}验证数组内容,和你原有两次调用的实现结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:02