免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1332 | 回复: 7
打印 上一主题 下一主题

[文本处理] 新人请教-linux下shell编程变量替换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-06-28 11:02 |只看该作者 |倒序浏览
我现在有shell。前面有一堆id数组的定义。
class_1_ids=(1 2 3)
class_2_ids=(3 6 9)
class_3_ids=(10 11 21)
后面需要根据选择对相印的ids进行处理。我现在是这么写的
select op_class in "class_1" "class_2" "class_3" "quit"; do
    break
done
if [[ ${op_class} = "class_1" ]]; then
    op_ids=("${class_1_ids[@]}")
elif [[ ${op_class} = "class_2" ]]; then
    op_ids=("${class_2_ids[@]}")
elif [[ ${op_class} = "class_3" ]]; then
    op_ids=("${class_3_ids[@]}")
fi
每次增加ids组都需要去修改if里增加一段判断
现在想让op_ids自动根据op_class进行组合
op_ids=("${${op_class}_ids[@]}")这样一直都说语法有错。
请问需要如果修改才能实现呢?谢谢各位大牛了。

论坛徽章:
0
2 [报告]
发表于 2017-06-28 15:42 |只看该作者
eval op_ids="("`eval echo '$'{${op_class}_ids[@]}`")"

经过其他大神点拨。使用上述指令搞定。特地来结贴。希望能帮助到有需要的人

论坛徽章:
0
3 [报告]
发表于 2017-06-28 15:44 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
4 [报告]
发表于 2017-06-28 15:47 |只看该作者
op_ids=$(eval echo \${${op_class}_ids[@]})

论坛徽章:
0
5 [报告]
发表于 2017-06-29 09:46 |只看该作者
关阴月飞 发表于 2017-06-28 15:47
op_ids=$(eval echo \${${op_class}_ids[@]})

多谢回复。

论坛徽章:
0
6 [报告]
发表于 2017-06-29 16:13 |只看该作者
op_ids=$(eval echo \${${op_class}_ids[@]})
也可以。但是op_ids是字符串类型。计算数组长度length=${#op_ids[@]}时是1.
eval op_ids="("`eval echo '$'{${op_class}_ids[@]}`")"
计算出来才是正确的长度。

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
7 [报告]
发表于 2017-06-29 17:01 |只看该作者
回复 6# hyzhj2156

想保存成数组,你在外围加对括号就好了xx=(xxoo)

论坛徽章:
0
8 [报告]
发表于 2017-06-29 19:21 |只看该作者
嗯嗯。是的,非常感谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP