[Comm] Re[2]: [Comm] Re[2]: [Comm] Re[2]: [Comm] S: .rpm name normalizer (was: Кэш apt)
ASA
=?iso-8859-1?q?llb_=CE=C1_udm=2Eru?=
Ср Май 28 21:50:09 MSD 2003
Hello Konstantin,
Wednesday, May 28, 2003, 10:12:58 PM, you wrote:
>> >> KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep
>> >> $j) ]
>> >>
>> >> if grep -qs $j /root/CD.[12]
>>
>> KV> Как вариант. Мне нравится if со скобками.
>>
>> Сработает быстрее. Для длинных файлов - на порядок.
KV> Т.е. если со скобками
KV> if [ grep -qs $j /root/CD.[12] ]
Это вообще не сработает. Я не писал скобок. man test
if grep -qs $j /root/CD.[12]
KV> быстрее чем
KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
KV> ?┼э
Да. Потому что grep -q немедленно вернет результат "истина",
которое затем сразу проанализирует if. В вашем же случае
вызывается команда [ (посмотрите '/bin/[') у которой аргументами
будет все остальное до знака ']'. Неэффективность в том, что
$(grep ... ) заставит сформировать длинную строку со всеми
вхождениями шаблона, в то время как для положительного ответа
достаточно факта первого совпадения (grep -q). А если
результирующая строка будет более 128Кбайт, то будет
переполнение буфера командной строки у [.
короче
man grep
man bash
man test
--
Best regards,
ASA mailto:llb на udm.ru
Подробная информация о списке рассылки community