Титла: Bash Публикувано от: tony1975 в Sep 03, 2007, 14:39 Здравейте на всички! В момента уча писане на скриптове на bash и зациклих на едно място и не мога да разбера грешката, която излиза дали е от грешен синтаксис или от нещо друго. Нещата са следните: имаме файл logfile.test, с редове с най-различна текстова информация. В този файл трябва да се преброят редовете, в които има fff и zzz, но не само едно от двете. Скрипта, който съм написал е:
#!/bin/bash CNT='grep -fixed-strings -count "fff*zzz" logfile.test' printf "There are %d pairs "fff" along with "zzz" .\n" $CNT При стартиране ми дава грешка "Error on line 3: invalid number". Пробвах вместо ' да сложа ` и ", но мямаше ефект. Някой има ли идея къде съм сбъркал? P.S. Използвам едно ръководство по bash-скриптиране на SAMS. Титла: Bash Публикувано от: VladSun в Sep 03, 2007, 14:51 1. не си "ескейпнал" кавичките в printf около fff и zzz
2. няма такива опции за grep - с две тирета са ![]() 3. сложи `` около $CNT Титла: Bash Публикувано от: tony1975 в Sep 03, 2007, 15:03 Мерси Vladsun, но нищо не стана. А и опциите за grep са с -, а не с --.
Титла: Bash Публикувано от: VladSun в Sep 03, 2007, 15:11
Печеля! ![]() Какво означава "нищо не стана"?!? Не мога да ти помогна ако ми даваш подобни описания на проблемните си ![]() Искам - твоя код, данни и параметри, с които проваш, получен резултат, какво не ти харесва в получения резултат и т.н. ![]() Титла: Bash Публикувано от: tony1975 в Sep 03, 2007, 15:20 Нещата са такива, каквито вече ги описах. В примера всичко е дадено, както го описах. Прави ми впечатление, че ако сложа ' целия ред е в един цвят, а ако поставя скоби - всички думи се оцветяват с различен цвят, което ме навежда на мисълта, че нещо не е наред с '.
Описание на файла logfile.test: fff, fdsfdfdsdfsf, zzz fff, asdffdsdsdf, ddd sss, adsdasdas, zzz fff, sdffdsfdffs, zzz Идеята е да се намери колко (като цяло число) са редовете, на които има fff и zzz. А грешката, която дава BASH-а е: ./test: line 5: printf: grep -count -fixed-strings "fff*zzz" logfile.test: invalid number There are 0 fff along with zzz Титла: Bash Публикувано от: VladSun в Sep 03, 2007, 15:21 Забрави кода
![]() ПП: И моя грешка - няма нужда от ескейпване на кавичките в printf Титла: Bash Публикувано от: tony1975 в Sep 03, 2007, 15:23 #!/bin/bash
CNT='grep -fixed-strings -count "fff*zzz" logfile.test' printf "There are %d pairs fff along with zzz .\n" $CNT Това е код-а ![]() Титла: Bash Публикувано от: VladSun в Sep 03, 2007, 15:32 Е ... показах ти няколко грешки, а ти изобщо не си ги оправил
![]() Щом ще учиш bash copy-paste примери не давам ![]() А и защо не ползваш -P опцията, вместо -F ... Титла: Bash Публикувано от: tony1975 в Sep 03, 2007, 15:36 VladSun, пробвах по всевъзможни начини - не става и не става.
Титла: Bash Публикувано от: VladSun в Sep 03, 2007, 15:38 Командата за grep не се изпълнява никъде - използвай `` ...
|