Вы используете ==
вместо =
внутри [ ]
, но это чушь.Последние версии Ubuntu используют dash в качестве / bin / sh, и он не поддерживает ==
;он получает ошибку, которая интерпретируется как провал теста:
$ if [ foo == foo ]; then echo "The strings match"; else echo "The strings do *not* match"; fi
dash: 1: [: foo: unexpected operator
The strings do *not* match
Решение: переключитесь на =
$ if [ foo = foo ]; then echo "The strings match"; else echo "The strings do *not* match"; fi
The strings match
Если вы собираетесь использовать /bin/sh
вместо/bin/bash
, вам действительно нужно остерегаться нападок.Об этом есть хорошая страница в вики Ubuntu .Либо так, либо переключитесь на /bin/bash.
Ps. Если вы собираетесь использовать расширения bash, я бы рекомендовал использовать [[ ]]
вместо [ ]
для условных выражений - это исправляет большинство проблем.синтаксические странности [ ]
и добавляет некоторые полезные новые возможности, такие как сопоставление с шаблоном и регулярным выражением.