本文介绍了为什么会出现错误“无效算术运算符"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将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_TYPEAPP_USEASSETS_NOASSETS_STATASSETS_TYPEBIZ_GROUPBIZ_L1BIZ_L2CI_COMMENTCI_NOCI_OWNERCI_PARENTCPU_CLOCKCPU_CORECPU_MODELCPU_NUMCPU_VENDORDB_ADMIN1DB_ADMIN2DEV_ADMINDEV_ADMIN2DISUSE_DATEENTER_DATE到期日期HDD_MODELHDD_NUMHDD_TYPEHDD_VENDORHDD_VOLHOLE_NO主机名IDCINTO_DATEMAINT_CORPMAINT_DATEMEM_MODELMEM_NUMMEM_VENDORMEM_VOL模型NIC1_IPNIC1_MACNIC1_PORTNIC1_SWNIC2_IPNIC2_MACNIC2_PORTNIC2_SWNIC_MODELNIC_VENDOROOB_IPOOB_MACOOB_PORTOOB_SWOS_ARCHOS_KERNELOS_NAME架子RACK_NORAID_CACHERAID_FIRMRAID_MODELRAID_NORAID_VENDOR代表SC_ADMINSC_CATEGORYSC_DEPTSC_TYPESEND_DATE序列号SERVER_CLASSSIM卡SPEC_CODESVC_GROUPSVC_L1SVC_L2SYS_ADMINSYS_ADMIN2单元USE_DESC小贩VM_CLASSVM_TYPEAssignType

APP_TYPEAPP_USEASSETS_NOASSETS_STATASSETS_TYPEBIZ_GROUPBIZ_L1BIZ_L2CI_COMMENTCI_NOCI_OWNERCI_PARENTCPU_CLOCKCPU_CORECPU_MODELCPU_NUMCPU_VENDORDB_ADMIN1DB_ADMIN2DEV_ADMINDEV_ADMIN2DISUSE_DATEENTER_DATEEXPIRE_DATEHDD_MODELHDD_NUMHDD_TYPEHDD_VENDORHDD_VOLHOLE_NOHOSTNAMEIDCINTO_DATEMAINT_CORPMAINT_DATEMEM_MODELMEM_NUMMEM_VENDORMEM_VOLMODELNIC1_IPNIC1_MACNIC1_PORTNIC1_SWNIC2_IPNIC2_MACNIC2_PORTNIC2_SWNIC_MODELNIC_VENDOROOB_IPOOB_MACOOB_PORTOOB_SWOS_ARCHOS_KERNELOS_NAMERACKRACK_NORAID_CACHERAID_FIRMRAID_MODELRAID_NORAID_VENDORREPRESENTSC_ADMINSC_CATEGORYSC_DEPTSC_TYPESEND_DATESERIAL_NOSERVER_CLASSSIMSPEC_CODESVC_GROUPSVC_L1SVC_L2SYS_ADMINSYS_ADMIN2UNITUSE_DESCVENDORVM_CLASSVM_TYPEassignType

推荐答案

 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

这篇关于为什么会出现错误“无效算术运算符"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-16 00:46
查看更多