[英]Bash script - variable expansion within backtick/grep regex string
我正在嘗試在正則表達式搜索字符串內部的反引號內部擴展我的bash腳本中的變量。
我希望$VAR
被替換。
我匹配的線條如下:
start
....一些人物..... id:
.....一些人物..... [variable im searching for]
....一些人物.... end
var=`grep -E '^.*id:.*$VAR.*$' ./input_file.txt`
這有可能嗎?
它似乎不起作用。 我知道我通常可以使用"$VAR"
擴展變量,但這不會直接搜索正則表達式中的那些字符嗎? 我不確定這里優先考慮的是什么。
變量確實在反引號中擴展,但它們不會在單引號中擴展。
所以你需要為你的正則表達式字符串使用雙引號(我不確定你對它的關注是什么)或者使用兩個引號。
所以要么
var=`grep -E "^.*id:.*$VAR.*$" ./input_file.txt`
要么
var=`grep -E '^.*id:.*'"$VAR"'.*$' ./input_file.txt`
此外,您可能希望使用$(grep ...)
而不是反引號,因為它們是更現代的方法,並且具有更好的語法屬性以及能夠嵌套。
您需要將表達式用雙引號(然后,轉義需要轉義的任何內容)才能插入變量。
var=$(grep -E "^.*id:.*$VAR.*\$" ./input_file.txt)
(反斜杠在這里並不是絕對必要的,但我把它放進去給你一個想法。你的真實表達可能更復雜。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.