выполнить команду оболочки с переменной - PullRequest
1 голос
/ 28 декабря 2011

Чтобы выполнить 'find' с некоторыми переменными из txt файла, я сделал это, но это не работает.это неправильно с оператором execute?

#/bin/bash 
while read line; 
do 
   echo tmp_name: $line
   for ST in 'service.getFile("'$line;
           do
                   find ./compact/ -type f -exec grep -l $ST {} \;
           done
done < tmpNameList.txt

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Попробуйте указать $ST в вашей команде find.

Более того:

  • , поскольку вы работаете из текущего каталога, ./ не требуется;
  • у вас, кажется, нет никакого специального символа регулярного выражения (( необходимо заключать в кавычки в классическом режиме регулярного выражения grep, и я предполагаю, что вы имели в видубуквальная точка), поэтому используйте fgrep (или grep -F).Т.е.:

               find compact/ -type f -exec fgrep -l "$ST" {} \;
    
0 голосов
/ 28 декабря 2011

grep может считывать несколько шаблонов из файла (опция -f):

find ./compact/ -type f -exec grep -f patterns.txt {} +

, где patterns.txt (предварительно 'service.getFile(' к каждой строке):

sed 's/^/service.getFile(/' tmpNameList.txt >patterns.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...