簡體   English   中英

bash:sed:變量中的正則表達式

[英]bash : sed : regex in variable

我對以下腳本感到非常瘋狂。

以下命令按預期工作:

echo a | sed 's/a/b/'

輸出:

b

但是這個腳本沒有:

test="'s/a/b/'"
echo a | sed $test

輸出:

sed: -e expression #1, char 1: unknown command : `''

我真的應該是傻瓜,但我不知道我錯過了什么。

謝謝,

test="'s/a/b/'"
echo a | sed $test

相當於:

test="'s/a/b/'"
echo a | sed "'s/a/b/'"

顯然sed並不理解帶有"'的命令,它將'解釋'為命令。你可以使用其中任何一個:

test='s/a/b/'

要么

test='s/a/b/'

你可能想要這個:

kent$  test="s/a/b/"         

kent$  echo a | sed ${test}
b

要么

kent$  echo a | sed $test  
b

要么

test=s/a/b/

這是因為你的雙重纏繞你的字符串。 test="'s/a/b'" 然后,Sed將's/a/b/'作為文字字符串。 你只想要sed接收s/a/b/
您只需要將字符串包裝在一組引號中 ,否則內部引號集將被解釋為參數的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM