On Thu, Aug 22, 2013 at 02:55:15PM +0400, Владимир Скубриев wrote: > On 22.08.2013 14:28, Sergey Korobitsin wrote: > >Владимир Скубриев ☫ → To [email protected] @ Thu, Aug 22, 2013 > >14:23 +0400 > > > >>есть команда, точнее набор команд > >>echo $TO_DISK_INFO | grep SERIAL_SHORT | grep -q $SERIALTO > >> > >>if [ ОТРИЦАНИЕ + УСЛОВИЕ ]; > >>then > >> echo " ERROR" > >> exit 3 > >>fi > >> > >>Мне необходимо условие с отрицанием и желательно чтобы все было > >>помещено в блок if [ ... ], т.е. в одну строку - желательно но не > >>обязательно. > >> > >>Т.е. когда мой набор команд выполнен не успешно, то срабатывало то, > >>что в блоке then иначе скрипт продолжал работать дальше > >echo $TO_DISK_INFO | grep SERIAL_SHORT | grep -q $SERIALTO > >if [ $? -ne 0 ]; then > > echo " ERROR" > > exit 3 > >fi > > > >А что в $TO_DISK_INFO? Можно оптимизировать. > > > Извиняюсь. работает! Это я уже просто запутался не тот серийник подсовывал. > > Большое спасибо.
Немножко идей:
1. Заключайте $varname в "", чтоб шелу не вздумалось разбить значение
'varname' на отдельных слов. Я-то заключаю всегда, не мешает, быстро
привикнул.
2. command; if [ "$?" -eq 0 ] точно то же самое как if command.
Так что:
if echo "$TO_DISK_INFO" | grep "$SERIAL_SHORT" | grep -q "$SERIALTO"; then
...
fi
3. Я никогда не использую "grep", всегда использую или egrep, или fgrep:
- fgrep быстрее для фиксированных низов
- fgrep не интерпретирует специальных символов - ".", "[", "]", "*"...
- egrep использует немножко поудобнее синтаксис extended regular
expressions чем grep - не нужно столько \ ставить.
4. Подсовывайте опцию "-e" перед аргументом grep и sed. Для единичного
аргумента не очень полезно, но очень будет полезно, когда вздумается
подавать второй и третий аргумент: fgrep -e exp1 -e exp2 ...
Так что:
if echo "$TO_DISK_INFO" | fgrep -e "$SERIAL_SHORT" | fgrep -qe "$SERIALTO"; then
...
fi
Всего лучшего,
Петр
--
Peter Pentchev [email protected] [email protected] [email protected]
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13
Thit sentence is not self-referential because "thit" is not a word.
signature.asc
Description: Digital signature

