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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [РЕШЕНО] Странное поведение скрипта в разных шеллах  (Прочитано 530 раз)

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

Оффлайн Karl500

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Коллеги, я что-то совсем перестал что-либо понимать. Кто-нибудь может прокомментировать работу следующего простенького скрипта в трех разных шеллах (напомню, что у нас в Ubuntu по умолчанию sh - это dash).
Скрипт:
IS=`uname -m`
[ "$IS" = "i686" ] ; echo $?
[ "$IS" == "i686" ] ; echo $?
Результаты выполнения:
$ sh aaa.sh
0
[: 35: i686: unexpected operator
2
$ ksh aaa.sh
0
0
$ bash aaa.sh
0
0
Вопрос, собственно, в том, почему в dash результат отличен от двух других шеллов, с которыми он вроде как должен быть совместим? (или, перефразируя, почему в bash и ksh проходит сравнение "==" ?)

Пользователь решил продолжить мысль [time]Sat Jul  9 11:38:40 2011[/time]:
Все, вопрос снят. Разобрался. Если кому интересно - просто dash строго следует POSIX, а в нем нет двойного равенства при проверке условия.
« Последнее редактирование: 09 Июля 2011, 11:39:09 от Karl500 »

 

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