Я не могу не заметить, что так много кодов оболочки, использующих операторы сравнения, как аргументы команды test
, а не знаками.Совместимость с двоичным оператором для оболочки
Например, чтобы проверить, если аргументы не принимаются в оболочке с помощью test
:
if test $# -eq 0
then
echo "No arguments received"
fi
Почему мы не может заменить -eq
с более, скажем, традиционным, интуитивным, знакомым, универсальным, и, читаемым знаком с ==
? Так что мы имеем следующее:
if test $# == 0
then
echo "No arguments received"
fi
То же самое с другими операторами сравнения < < =>>.
Я предполагаю, что для этого должны быть некоторые технические причины (возможно, проблема совместимости?) В пользу формата -eq
за ==
, но я не знаю о них.
Это именно то, что я искал! Какие еще были бы побочные эффекты использования операторов сравнения строк для целочисленного сравнения? – melvynkim
В основном это - алфавитный и числовой порядок, а целочисленная канонизация. Это особенно актуально в августе, потому что ведущие нули означают восьмеричную нотацию, а 'date +% m' начинает возвращать недопустимый номер' 08'. –