Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: непонятное выражение sh  (Прочитано 1024 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 0xEEd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
непонятное выражение sh
« : 11 Июня 2010, 11:59:01 »
многоуважаемые гуры! помогите пожалйста разобраться с синтаксисом оболочки sh. В файле configure дистрибутива tilda-0.9.6 прочитал вот такую фразу:

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

Какой смысл условий оператора if?

Оффлайн sciko

  • Активист
  • *
  • Сообщений: 854
    • Просмотр профиля
Re: непонятное выражение sh
« Ответ #1 : 11 Июня 2010, 12:08:31 »

Оффлайн 0xEEd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Re: непонятное выражение sh
« Ответ #2 : 11 Июня 2010, 14:03:06 »
Спасибо за ссылки, теоретические основы мне понятны, но как это реализуется на практике в данном случае до сих пор остается загадкой. Конретно не ясно следующее:
1) символ а нигде выше не определен. Для чего нужно искать пустую строку в самой себе? (И посылать результаты в никуда >/dev/null)
2) зачем делать заведомо успешный вызов test? Или на разных системах разный синтаксис регулярных выражений и результаты могут отличаться?

Оффлайн sciko

  • Активист
  • *
  • Сообщений: 854
    • Просмотр профиля
Re: непонятное выражение sh
« Ответ #3 : 11 Июня 2010, 14:22:09 »
1) символ а нигде выше не определен. Для чего нужно искать пустую строку в самой себе? (И посылать результаты в никуда >/dev/null)
Во-первых, a не обязательно пустая строка (никто не говорил об обнулении переменных).
Во-вторых, суть этой части как раз в 2>&1.

Или на разных системах разный синтаксис регулярных выражений и результаты могут отличаться?
Не только системах, но и настройках. Существуют как минимум регэкспы по версии POSIX и по версии Perl.

Оффлайн 0xEEd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Re: непонятное выражение sh
« Ответ #4 : 11 Июня 2010, 16:16:53 »
Теперь ясно. Не совсем, но гораздо больше чем до Ваших ответов. Благодарю.

Пользователь решил продолжить мысль 11 Июня 2010, 22:26:32:
В том же файле обнаружилось еще:

exec 7<&0 </dev/null 6>&1
Дескриптор 1 - это stdout, а чему соответствуют 0, 6 и 7 ?
« Последнее редактирование: 11 Июня 2010, 22:26:32 от 0xEEd »

 

Страница сгенерирована за 0.016 секунд. Запросов: 20.