我正在运行以下 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")
(观察引号,并且正如适配器提到的,不要使用反引号,而是$(...)
使用可嵌套的)。