我正在尝试将 yaml 解析为 Json。 我想设置具有字符串索引的数组。
当我尝试时,出现错误
这是我的来源和错误
keys=$(echo $ci_json | jq 'keys')
key_array=($keys)
ARR=()
for raw_key in ${key_array[@]}; do
if [ $raw_key = '[' -o $raw_key = ']' ]; then
continue;
else
key=$(echo $raw_key | sed -e 's/"//g' -e 's/,//g')
value=$(echo $ci_json | jq .$key)$'\t'
ARR[$key]=$value
fi
done
错误:localhost.localdomain:语法错误:算术运算符无效(错误标记为“.localdomain”)
此错误出现在“ARR[$key]=$value”
有人帮助我吗?
这是主要列表:
APP_TYPE 应用程序_使用 ASSETS_NO Assets 统计 Assets 类型 商业组 商务_L1 商务_L2 CI_COMMENT CI_NO CI_所有者 CI_PARENT 中央处理器时钟 中央处理器核心 CPU_型号 CPU_NUM CPU_供应商 数据库管理员1 数据库管理员2 开发管理员 开发者管理员2 DISUSE_DATE 输入_日期 到期日期 硬盘型号 HDD_NUM 硬盘类型 硬盘供应商 硬盘_卷 孔号 主机名 国际数据中心 INTO_DATE 维护公司 MAINT_DATE MEM_模型 MEM_NUM MEM_供应商 MEM_VOL 模型 网卡1_IP 网卡1_MAC 网卡1_端口 网卡1_SW 网卡2_IP 网卡2_MAC 网卡2_端口 网卡2_SW 网卡型号 NIC_供应商 外网IP OOB_MAC OOB_端口 OOB_SW 操作系统_ARCH 操作系统内核 操作系统_名称 架子 机架号 RAID_缓存 RAID_FIRM RAID_模型 RAID_NO RAID_供应商 代表 SC_管理员 SC_CATEGORY SC_DEPT SC_类型 发送_日期 序列号 服务器类 SIM卡 规范代码 SVC_GROUP SVC_L1 SVC_L2 系统管理员 系统管理员2 单元 使用_DESC 小贩 虚拟机类 虚拟机类型 分配类型
最佳答案
Error : localhost.localdomain: syntax error: invalid arithmetic operator (error token is ".localdomain")
当 ARR
是索引数组(非关联)且 key
的值时,这种情况会发生在 ARR[$key]=...
上> 是localhost.localdomain
。
索引数组应使用数字下标,而不是任意字符串。
如果您想将字符串索引与ARR
一起使用,
您必须将其声明为关联数组,
从 Bash 4 开始支持:
declare -A ARR
关于bash - 为什么我会收到错误 'invalid arithmetic operator' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567099/