免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何替换数组 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-19 13:09 |只看该作者 |倒序浏览
文件game.conf的内容:
game=(
"douyu"
"huya"
"xiongmao"
)
文件my.sh中有个变量
game=("test" "test2")

现在的需求是, 我要在my.sh中把game.conf中的内容原原本本的复制过来,使得my.sh中的变量变为
game=(
"douyu"
"huya"
"xiongmao"
)

那么,在my.sh这个shell脚本中应该怎么做?

论坛徽章:
0
2 [报告]
发表于 2016-05-19 13:12 |只看该作者
看一看, 顶一下

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2016-05-19 13:20 |只看该作者
回复 1# wsshopping

$ bash my.sh
before: test test2
after : douyu huya xiongmao

$ cat game.conf
game=(
"douyu"
"huya"
"xiongmao"
)

$ cat my.sh
game=("test" "test2")
echo "before: ${game[@]}"
. game.conf
echo "after : ${game[@]}"

论坛徽章:
0
4 [报告]
发表于 2016-05-19 14:28 |只看该作者
回复 3# jason680


谢谢回复, 你这个满足不了我的需求,  我需要的是真实的替换 my.sh中的game变量的内容, 使用 . game.conf的话,还是依赖game.conf这个文件;我需要的是改变my.sh中的game变量的内容:
执行my.sh前,显示
cat my.sh:
game=("test" "test2")

执行my.sh后,显示
cat my.sh:
game=(
"douyu"
"huya"
"xiongmao"
)

不能使用source或者.



   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2016-05-19 14:33 |只看该作者
回复 4# wsshopping

复制过来 ==> cp
   

论坛徽章:
0
6 [报告]
发表于 2016-05-19 14:41 |只看该作者
回复 5# jason680


额,,,, 要脚本实现额,  只能复制这个变量, 怎么破


   

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2016-05-19 15:01 |只看该作者
回复 1# wsshopping

  1. #!/bin/bash

  2. eval `cat game.conf`
  3. echo ${game[@]}
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
8 [报告]
发表于 2016-05-19 17:07 |只看该作者
sed -i ?

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之八一
日期:2016-05-18 15:38:22
9 [报告]
发表于 2016-05-20 10:40 |只看该作者
sed不太好使,game.conf带回车。我用sed "s/game=([^)]*)/$game/"会报错。
总觉得不管在my.sh里面写上啥改变my.sh文件的脚本,最终结果都得把这部分command给删掉才行啊。
这个更像一个考试题,而不是一个实际遇到的问题。

求职 : Linux运维
论坛徽章:
10
丑牛
日期:2013-11-22 14:59:41数据库技术版块每日发帖之星
日期:2016-08-13 06:20:0015-16赛季CBA联赛之山西
日期:2016-08-03 10:35:38数据库技术版块每日发帖之星
日期:2016-07-31 06:20:002016科比退役纪念章
日期:2016-06-27 14:08:14数据库技术版块每日发帖之星
日期:2016-06-02 06:20:0015-16赛季CBA联赛之广东
日期:2016-05-20 15:06:2215-16赛季CBA联赛之深圳
日期:2016-01-29 16:27:402015亚冠之阿尔艾因
日期:2015-09-08 16:35:3615-16赛季CBA联赛之北京
日期:2017-03-28 18:45:36
10 [报告]
发表于 2016-05-20 16:11 |只看该作者
回复 7# Herowinter
请问,这里面的@代表什么意思?是变量吗?谢谢!


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP