BASH:如何将变量置于正则表达式中?

Ale*_*sio 6 regex variables bash grep

我正在尝试使用以下代码:

searchfile="availables.txt"
read searchterm
grep_params="-i ^.*${searchterm}.*;.*$' $searchfile"
egrep $grep_params
Run Code Online (Sandbox Code Playgroud)

它应该回显以$ searchterm开头的所有行,然后是";".但是如果searchterm包含空格它不起作用(例如:"黑眼豆豆"),它给我以下输出:

egrep: eyed: No such file or directory
egrep: peas.*;.*$": No such file or directory
egrep: "availables.txt": No such file or directory
Run Code Online (Sandbox Code Playgroud)

sta*_*tti 0

您正在寻找的代码类似于:

searchfile="availables.txt"
read searchterm
regex="${searchterm}"'.*;'
egrep "${grep_params}" "${searchfile}"
Run Code Online (Sandbox Code Playgroud)

请注意,我简化了您的正则表达式(我希望我做对了!)。

然而,正如 Ignacio Vazquez-Abrar 指出的那样,这在复杂的情况下会失败。