为什么会出现错误“无效算术运算符"? [英] why do I get an error 'invalid arithmetic operator'?
问题描述
我正在尝试将Yaml解析为Json. 并且我想设置具有字符串索引的数组.
I am trying to parse yaml to Json. and I'd like to set the array that has string index.
当我尝试时,出现错误
这是我的出处和错误
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")
Error : localhost.localdomain: syntax error: invalid arithmetic operator (error token is ".localdomain")
此错误出现在"ARR [$ key] = $ value"
This error appeared at "ARR[$key]=$value"
有人帮助我吗?
这是密钥列表:
APP_TYPE APP_USE ASSETS_NO ASSETS_STAT ASSETS_TYPE BIZ_GROUP BIZ_L1 BIZ_L2 CI_COMMENT CI_NO CI_OWNER CI_PARENT CPU_CLOCK CPU_CORE CPU_MODEL CPU_NUM CPU_VENDOR DB_ADMIN1 DB_ADMIN2 DEV_ADMIN DEV_ADMIN2 DISUSE_DATE ENTER_DATE 到期日期 HDD_MODEL HDD_NUM HDD_TYPE HDD_VENDOR HDD_VOL HOLE_NO 主机名 IDC INTO_DATE MAINT_CORP MAINT_DATE MEM_MODEL MEM_NUM MEM_VENDOR MEM_VOL 模型 NIC1_IP NIC1_MAC NIC1_PORT NIC1_SW NIC2_IP NIC2_MAC NIC2_PORT NIC2_SW NIC_MODEL NIC_VENDOR OOB_IP OOB_MAC OOB_PORT OOB_SW OS_ARCH OS_KERNEL OS_NAME 架子 RACK_NO RAID_CACHE RAID_FIRM RAID_MODEL RAID_NO RAID_VENDOR 代表 SC_ADMIN SC_CATEGORY SC_DEPT SC_TYPE SEND_DATE 序列号 SERVER_CLASS SIM卡 SPEC_CODE SVC_GROUP SVC_L1 SVC_L2 SYS_ADMIN SYS_ADMIN2 单元 USE_DESC 小贩 VM_CLASS VM_TYPE AssignType
APP_TYPE APP_USE ASSETS_NO ASSETS_STAT ASSETS_TYPE BIZ_GROUP BIZ_L1 BIZ_L2 CI_COMMENT CI_NO CI_OWNER CI_PARENT CPU_CLOCK CPU_CORE CPU_MODEL CPU_NUM CPU_VENDOR DB_ADMIN1 DB_ADMIN2 DEV_ADMIN DEV_ADMIN2 DISUSE_DATE ENTER_DATE EXPIRE_DATE HDD_MODEL HDD_NUM HDD_TYPE HDD_VENDOR HDD_VOL HOLE_NO HOSTNAME IDC INTO_DATE MAINT_CORP MAINT_DATE MEM_MODEL MEM_NUM MEM_VENDOR MEM_VOL MODEL NIC1_IP NIC1_MAC NIC1_PORT NIC1_SW NIC2_IP NIC2_MAC NIC2_PORT NIC2_SW NIC_MODEL NIC_VENDOR OOB_IP OOB_MAC OOB_PORT OOB_SW OS_ARCH OS_KERNEL OS_NAME RACK RACK_NO RAID_CACHE RAID_FIRM RAID_MODEL RAID_NO RAID_VENDOR REPRESENT SC_ADMIN SC_CATEGORY SC_DEPT SC_TYPE SEND_DATE SERIAL_NO SERVER_CLASS SIM SPEC_CODE SVC_GROUP SVC_L1 SVC_L2 SYS_ADMIN SYS_ADMIN2 UNIT USE_DESC VENDOR VM_CLASS VM_TYPE assignType
推荐答案
Error : localhost.localdomain: syntax error: invalid arithmetic operator (error token is ".localdomain")
当ARR
是索引数组(非关联数组)且key
的值为localhost.localdomain
时,这会在ARR[$key]=...
上发生.
索引数组应使用数字下标,而不是任意字符串.
This happens on ARR[$key]=...
when ARR
is an indexed array (not associative) and the value of key
is localhost.localdomain
.
Indexed arrays should use numeric subscripts, not arbitrary strings.
如果要将字符串索引与ARR
一起使用,
您必须将其声明为关联数组,
从Bash 4开始受支持:
If you want to use string indexes with ARR
,
you must declare it as an associative array,
which is supported as of Bash 4:
declare -A ARR
这篇关于为什么会出现错误“无效算术运算符"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!