如何在 grep 命令中添加变量

如何在 grep 命令中添加变量

我正在运行以下 grep 命令

var=`grep -n "keyword" /var/www/test/testfile.txt`

这项工作正如预期的那样,但我需要从循环中动态插入文件名,如下所示:

var=`grep -n "keyword" /var/www/test/`basename ${hd[$i]}`.txt`

但显然,在寻找匹配的 ``' 和意外的文件结尾时,使用 ` 会以意外的 EOF 来阻止这一过程

有什么办法可以解决这个问题吗?

答案1

请不要使用 `,而应使用功能

mygrep() { grep -n "yourkeyword" "/var/www/test/${1##*/}.txt"; }
for (( i= 0; i < ${#hd[@]}; i++ )); do yourvar=$(mygrep "${hd[$i]}"); done

答案2

您还可以使用:

var=$(grep -n "keyword" "/var/www/test/$(basename "${hd[$i]}").txt")

(观察引号,并且正如适配器提到的,不要使用反引号,而是$(...)使用可嵌套的)。

相关内容