Коллеги, я что-то совсем перестал что-либо понимать. Кто-нибудь может прокомментировать работу следующего простенького скрипта в трех разных шеллах (напомню, что у нас в 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, а в нем нет двойного равенства при проверке условия.