簡體   English   中英

Bash腳本 - 反引號/ grep正則表達式字符串中的變量擴展

[英]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.

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