ext4 с поврежденной структурой файловой системы

Похоже, на это был дан ответ в комментариях: У Solaris sh есть причуды. По крайней мере, в прошлом это даже не была оболочка POSIX . (Шили указывает, что POSIX не требует, чтобы / bin / sh был POSIX sh , что означает, что вам нужно перепрыгнуть через другую петлю, чтобы написать полностью переносимые сценарии оболочки.)

Этот вопрос может содержать полезную информацию / ссылки: https://superuser.com/questions/125728/what-is-the-difference-between-bash-and-sh

Ответ Шили указывает на то, что стандарт не определяет, что происходит с числами с мусором в конце, поэтому ваш сценарий фактически имеет неопределенное поведение и полагается на то, что делает Solaris sh . Таким образом, он не переносится.

Подобные вещи являются основной причиной, по которой, по-видимому, не рекомендуется использовать bash как / bin / sh в системе Solaris. Некоторые дистрибутивы GNU / Linux используют тире для / bin / sh , в то время как другие используют bash .

Я тестировал ваш код на трех установленных мною оболочках:

bash  4.3-11ubuntu2
$ [ 96blah -eq 96 ]; echo $?
bash: [: 96blah: integer expression expected
2

dash  0.5.7-4ubuntu1
$ [ 96blah -eq 96 ]; echo $?
dash: 1: [: Illegal number: 96blah
2

busybox sh  1.22.0-9ubuntu1
$ [ 96blah -eq 96 ]; echo $?
sh: 96blah: bad number
2

1
11.02.2018, 21:46
0 ответов

Теги

Похожие вопросы