AIX 7.2 TL5中ksh93脚本报错:无法向关联数组sorts追加索引数组
问题原因与解决办法
问题根源
AIX 7.2 TL5搭载的ksh93版本对关联数组的语法校验更严格了。你脚本里sorts被声明为关联数组(typeset -A),但赋值时用了普通索引数组的语法sorts=( ${sorts_s} )——这种不规范的写法在旧版AIX 6.1的ksh里被宽松兼容了,新版本直接抛出错误,明确禁止把普通数组的赋值逻辑套用到关联数组上。
针对性解决
根据你的实际需求二选一:
如果
sorts不需要是关联数组
把关联数组声明改成普通索引数组:typeset -a sorts # 或者直接写typeset sorts,默认就是索引数组这样原来的赋值语句
sorts=( ${sorts_s} )就能正常工作,和旧版本行为完全一致。如果确实需要用关联数组
关联数组必须以键=值的形式赋值,你得明确add_mailpiece_id是键还是值:- 把
add_mailpiece_id作为键,值设为空或自定义内容:sorts=( ["${sorts_s}"]="" ) # 或者单独赋值:sorts["${sorts_s}"]="你需要的值" - 如果只是想把字符串作为关联数组的元素值,那其实没必要用关联数组,直接用普通索引数组更合适。
- 把
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

