Como {1..$num_in}
não foi expandido para sequências de números, ele só foi expandido para uma string literal como {1..1}
, {1..2}
e assim por diante. Então, seu script realizou uma expansão aritmética, viu um número inválido e imprimiu uma mensagem de erro.
Quando você usa o seu shebang como #!/bin/sh
, depende do sistema usar o shell com o qual o /bin/sh
está vinculado para executar seu script. Assim, a mensagem de erro pode variar dependendo das camadas.
com dash
:
$ dash test.sh
aaaa
test.sh: 74: test.sh: Illegal number: {1..3}
com bash
:
$ bash test.sh
aaaa
test.sh: line 74: {1..3}: syntax error: operand expected (error token is "{1..3}")
NOT equal to 6
total= 0
Com pdksh
e mksh
:
$ pdksh test.sh
aaaa
test.sh[77]: {1..3}: unexpected '{'
NOT equal to 6
total= 0
com yash
:
$ yash test.sh
aaaa
yash: arithmetic: '{1..3}' is not a valid number
posh
mesmo através de uma falha de segmentação:
$ posh test.sh
aaaa
test.sh:77: {1..3}: unexpected '{'
Segmentation fault
O script funcionará com zsh
e ksh93
:
$ zsh test.sh
aaaa
aaaa
aaaa
equa to 6 6
total= 6