[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

вопрос по shell-программированию



Есть скрипт:

#!/bin/sh
items="items.db"
sales="sales.db"
receivings="receivings.db"
errors="errors.db"

clear

echo -n "Input item: "
read x

if [ "$(grep -i "$x" $items)" = "" ]; then
        echo "No items in database"
        echo "$(date '+%Y-%m-%d %H:%M') $x" >> error.db 
else
        grep $x $items | awk -F, '{printf "%-50s %10s\n", $2, $5}'
fi

exit 0

Кусок items.db

2000785666604,Giulia Funny B53 Uni melange grigio,прочее,260.00,260.00,1.00
2280000001339,Venera 9400136 перчатки,прочее,380.00,380.00,1.00
000036950010,Venera 9500136 перчатки,прочее,320.00,320.00,1.00
2280000000233,Полотенце «Иди в баню»,прочее,85.00,85.00,1.00
2280000000042,Авангард полотенце махр.,прочее,98.00,98.00,1.00
2280000001254,Донецк.мануф. ПЛ-601-130 полотнце х/б махр.,прочее,190.00,190.00,1.00

Проблема в строке проверки условния с grep. По задумке, если не находит
вхождение(-ий) в базе данных (проверка пустая ли строка) то выводит сообщение
и логирует. Проблема в том, что скрипт правильно работает только в случае,
если на вход подать число, к примеру 000. Но слова Дон и дон, уже подпадают
под разные ветвления. Как сделать, чтобы скрипт "искал" строку (включая 
словосочитания) нормально. Вместо "$x" пробовал "\"$x\"" - не помогает.

Спасибо.


Reply to: