Автор Тема: Bash  (Прочетена 3205 пъти)

tony1975

  • Напреднали
  • *****
  • Публикации: 35
    • Профил
Bash
« -: 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.



Активен

Не е срамно да не знаеш, срамно е да не знаеш и да не питаш.

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash
« Отговор #1 -: Sep 03, 2007, 14:51 »
1. не си "ескейпнал" кавичките в printf около fff и zzz
2. няма такива опции за grep - с две тирета са '<img'>
3. сложи `` около $CNT
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tony1975

  • Напреднали
  • *****
  • Публикации: 35
    • Профил
Bash
« Отговор #2 -: Sep 03, 2007, 15:03 »
Мерси Vladsun, но нищо не стана. А и опциите за grep са с -, а не с --.
Активен

Не е срамно да не знаеш, срамно е да не знаеш и да не питаш.

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash
« Отговор #3 -: Sep 03, 2007, 15:11 »
Цитат

man grep
...
-c, --count
...
-F, --fixed-strings

Печеля! '<img'>

Какво означава "нищо не стана"?!? Не мога да ти помогна ако ми даваш подобни описания на проблемните си '<img'>
Искам - твоя код, данни и параметри, с които проваш, получен резултат, какво не ти харесва в получения резултат и т.н. '<img'>
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tony1975

  • Напреднали
  • *****
  • Публикации: 35
    • Профил
Bash
« Отговор #4 -: 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



Активен

Не е срамно да не знаеш, срамно е да не знаеш и да не питаш.

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash
« Отговор #5 -: Sep 03, 2007, 15:21 »
Забрави кода '<img'>

ПП: И моя грешка - няма нужда от ескейпване на кавичките в printf



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tony1975

  • Напреднали
  • *****
  • Публикации: 35
    • Профил
Bash
« Отговор #6 -: 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

Това е код-а '<img'>
Активен

Не е срамно да не знаеш, срамно е да не знаеш и да не питаш.

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash
« Отговор #7 -: Sep 03, 2007, 15:32 »
Е ... показах ти няколко грешки, а ти изобщо не си ги оправил '<img'>

Щом ще учиш bash copy-paste примери не давам '<img'>
А и защо не ползваш -P опцията, вместо -F ...
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

tony1975

  • Напреднали
  • *****
  • Публикации: 35
    • Профил
Bash
« Отговор #8 -: Sep 03, 2007, 15:36 »
VladSun, пробвах по всевъзможни начини - не става и не става.
Активен

Не е срамно да не знаеш, срамно е да не знаеш и да не питаш.

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Bash
« Отговор #9 -: Sep 03, 2007, 15:38 »
Командата за grep не се изпълнява никъде - използвай `` ...
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 9249 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 4763 Последна публикация Jun 11, 2005, 19:12
от tuxi
Малко помощ за bash скрипт
Общ форум
idn 3 2267 Последна публикация Feb 10, 2008, 17:39
от neter
подмяна на дума във файл през bash
Хардуерни и софтуерни проблеми
mishot 12 4093 Последна публикация Aug 01, 2008, 14:54
от Hapkoc
За bash и команди за супер потребител
Общ форум
Vatman 4 2979 Последна публикация Oct 25, 2008, 19:25
от Vatman