Назад | Перейти на главную страницу

Как добавить переменную в команду grep

Я запускаю следующую команду grep

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

Это работает так, как ожидалось, но мне нужно динамически вставлять имя файла из цикла, например:

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

Но очевидно, что использование `тормозит это неожиданным EOF при поиске соответствия '' и неожиданного конца файла.

Есть идеи об этом?

Вы также можете использовать:

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

(обратите внимание на цитаты и, как упоминалось в адаптере, не используйте обратные кавычки, а $(...) вместо этого, поскольку это гнездо).

Пожалуйста, не используйте `, а используйте функция:

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