也许我正在抨击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')
答案 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