Тип не имеет значения, потому что это простая текстовая подстановка.Другими словами, значение переменной $temp
будет подставлено вместо $temp
(например).
По крайней мере для версии ksh
, которую я использую, для числового сравнения, если значение начинается с нечислового значения, оно будет равняться 0. Если оно начинается с числового значения, но содержит нечисловые значения, вы получите сообщение об ошибке.
Например:
$ export s1=xyz
$ export s2=7xyz
$ export i1=0
$ if [ $i1 -eq $s1 ]
> then
> echo equal
> fi
equal
$ if [ $i1 -eq $s2 ]
> then
> echo equal
> fi
ksh: 7xyz: bad number `7xyz'
Однако, исходя из ваших комментариев, это может быть не так для всех версий ksh
.
Исходя из этого, я постараюсь убедиться, что вы используете сравнения строк для строк и числовые сравнения дляномера.Все остальное может быть непереносимым.