0

也许我把 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')
4

1 回答 1

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
于 2013-05-10T16:22:15.700 回答