"$out"!=="$ende"
подставляется в 100!==100
, которая является непустой строкой, которая [
оценивается так же, как -n 100!==100
- истина, поскольку это ненулевая строка.
"$out" != "$ende"
будет подставлено в 100 != 100
, который является оператором с двумя операндами, и оценивается как ложное (поскольку сравниваются две строки).
В другом сценарии !=
может привести к логическая ошибка, так как она сравнивает операнды как строки.К счастью, равенство строк в вашем случае идентично равенству целых чисел (для которых вы бы использовали -ne
), но не всегда учитывайте, что это всегда так.
- В
[
операторам нужно пространство - В
[
нет такой вещи как !==
- Для целых чисел используйте
-eq
, -ne
, -lt
, -le
, -gt
, -ge
Также вам может понравиться seq
:
for count in $(seq 100)
do
# will happen 100 times, with `count` from `0` to `99`
done