Chinaunix

标题: shell得到一个字串,分割该字串循环处理 [打印本页]

作者: mornone    时间: 2015-10-15 11:14
标题: shell得到一个字串,分割该字串循环处理


需求:有一个地址A,demo_com/ExportData/?action=json,返回结果是

  1. ["demo_com\/ExportData\/Data\/20151013","demo_com\/ExportData\/Data\/20151014","demo_com\/ExportData\/Data\/20151012"]
复制代码
,需要通过shell循环请求这个json串里的每个单独地址B,demo_com/ExportData/Data/20151013,这个同样返回一个json串,

  1. ["demo_com\/ExportData\/Data\/20151013\/Data_6.txt","demo_com\/ExportData\/Data\/20151013\/Data_2.txt","demo_com\/ExportData\/Data\/20151013\/Data_4.txt","demo_com\/ExportData\/Data\/20151013\/Data_7.txt","demo_com\/ExportData\/Data\/20151013\/Data_8.txt","demo_com\/ExportData\/Data\/20151013\/Data_1.txt","demo_com\/ExportData\/Data\/20151013\/id","demo_com\/ExportData\/Data\/20151013\/Data_3.txt","demo_com\/ExportData\/Data\/20151013\/Data_5.txt","demo_com\/ExportData\/Data\/20151013\/Data_10.txt","demo_com\/ExportData\/Data\/20151013\/Data_9.txt"]
复制代码
,现在的需求是使用shell如何实现自动下载B结果里所有的txt文件呢,从A返回的结果里得B地址,因此B的返回结果都不一样。
我是做php开发的,这在php里直接拿来循环数组就可以搞定,但是在shell下不知道使用什么来分割字串然后循环,在此感谢!
作者: jy02150795    时间: 2015-10-16 22:51
用|cut -d '","' -f 取到数组里?
作者: yjh777    时间: 2015-10-19 16:21
  1. list="demo_com\/ExportData\/Data\/20151013","demo_com\/ExportData\/Data\/20151014","demo_com\/ExportData\/Data\/20151012"
  2. for uri in ${list//,/ }; do echo $uri; done
复制代码

作者: yjh777    时间: 2015-10-19 16:30
本帖最后由 yjh777 于 2015-10-19 16:31 编辑

完整代码: 无法验证: 不知道使用wget回来的字符串是否就是 json 列表,没有其他字符
list=$(wget demo_com/ExportData/?action=json)
list=${list//[][]/}  #删除前后的 []
for uri in ${list//,/ }; do
    sublist=$(wget "$uri")
    sublist=${sublist//[][]/}  #删除前后的 []
    for addr in ${sublist//,/ }; do
        wget "$addr"
    done
done[/code]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2