使用sed编辑脚本内部的变量

时间:2013-05-10 16:12:53

标签: sed bash

也许我正在抨击bash有点远,但我有这个包含url列表的变量。

#!/bin/bash    
/* returns
/path/page/one.php
/path/subseciton/
/path/to/this/section/
/path/to/yet/aother_section/about.php
etc
*/
list_of_urls = $(pull_urls.sh) 

然后我有一个for循环运行,从旧服务器和新服务器中提取文本内容。在每个我正在运行各种diff命令,看看有什么变化。

for i in $urls
    do

        echo $i
        storage_area=./working/$i/
        mkdir -p $storage_area


        xidel http://oldserver/$i  -e '//div[@id="maincontent"]//p' > $storage_area/old.txt
        xidel http://newserver/$i -e '//div[@id="content"]//p' > $storage_area/new.txt
        diff $storage_area/old.txt $storage_area/new.txt > $storage_area/diff.diff
        wdiff $storage_area/old.txt $storage_area/new.txt > $storage_area/wdiff.wdiff
    done

我的问题是我需要删除尾部斜杠。以下列方式这样做是否可取?

// inside the loop, before xidel calls
i=$(echo $i | sed -e 's/\/$//g')

1 个答案:

答案 0 :(得分:2)

以这种方式怎么样:

kent$ i=foo/                                                                                                                                             
kent$ i=${i%/}                                                                                                                                           
kent$ echo $i
foo

如果您更喜欢使用sed,则可以考虑使用/以外的其他分隔符,因为您希望在模式中使用斜杠:

kent$ i=/path/to/this/section/
kent$ i=$(sed 's#/$##'<<<"$i")
kent$ echo $i
/path/to/this/section