On Thu, Aug 22, 2013 at 02:55:15PM +0400, Владимир Скубриев wrote: > On 22.08.2013 14:28, Sergey Korobitsin wrote: > >Владимир Скубриев ☫ → To Debian-russian@lists.debian.org @ 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 roam@ringlet.net roam@FreeBSD.org p.penchev@storpool.com 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.
Attachment:
signature.asc
Description: Digital signature