2013-02-24 38 views
0

任何人都可以告訴我爲什麼這不起作用嗎?使用sed與陣列

Temp=$(sed -n '/"${Arr[$index]}"/,/"${Arr[$((index+1))]}"/p' $Text); 

它仍然不起作用。我試着這樣做:

index=0 
while [ "$index" -lt "$((Arr_LEN-1))" ]; do 
    Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text);  
    let "index++" 
done 
+0

什麼是預期的輸出,並且它有什麼作用呢? – user000001 2013-02-24 14:09:10

+0

你能更具體嗎?如何「它不工作」?錯誤訊息?我們如何重現它? – 2013-02-24 14:36:09

+0

我有2個問題:首先我使用單引號,第二個$ text指向字符串而不是文件,謝謝大家 – Max 2013-02-24 14:43:02

回答

5

因爲sed腳本在單引號,這將阻止所有擴展:

圍護字符用單引號保留引號內的每個字符的字面意義。

更改單引號雙引號應該什麼幫助:

雙引號引起的字符保留了引號中的所有字符的字面意義,$,`,\例外,而且,當啓用歷史擴展爲 時,!字符$和`在雙引號內保留其特殊含義。

+0

我編輯問題 – Max 2013-02-24 13:56:19

3

因爲您使用的是單引號。嘗試:

Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text); 
+0

我編輯問題 – Max 2013-02-24 13:56:36