2013-05-10 55 views
0

也許我正在對bash進行一些調整,但是我有一個包含url列表的變量。使用sed編輯腳本內部的變量

#!/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') 

回答

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 
+0

謝謝。一旦時限到期,關於標記爲正確。你介意解釋這是如何以及爲什麼{%/}這有效嗎?那叫什麼?或者,我應該閱讀哪個手冊頁?再次謝謝你! – Richard 2013-05-10 16:25:04

+0

@Richard點擊這裏:http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html – Kent 2013-05-10 16:28:29

+0

如果你喜歡閱讀man page,man bash和搜索Parameter Expansion – Kent 2013-05-10 16:30:14