Seu script está funcionando aqui. A única maneira de fazê-lo produzir o mesmo erro que você informa é fazer com que a variável db_ctdy_sr
contenha um new line
:
Adicione uma nova linha:
source db_count.ini
db_ctdy_sr=$' 7\r'
E, em seguida, teste o script:
$ ./so
Value of db:7
")syntax error: invalid arithmetic operator (error token is "
The value of db:
//test if working
//test if working
Not.
Bye!
Isso pode acontecer se o arquivo db_count.ini
contiver caracteres de retorno de carro do DOS.
Executar:
$ sed -n l db_count.ini
db_ctdy_sr= 7\r$
(ou similar) para ver o \r
no arquivo.
remova os retornos de carro editando o arquivo e removendo os caracteres com falha, ou alterando esta linha:
n_db_sr=${db_ctdy_sr// /}
Para:
n_db_sr=${db_ctdy_sr//[ $'\r'}]}
Ou, mais geral, para remover todos os caracteres de controle:
n_db_sr=${db_ctdy_sr//[ $'shopt -s globasciiranges
1'-$'7']}
Para garantir que a ordem de intercalação não modifique a ordem pretendida dos valores ascii de 1 (octal 001) a 31 (octal 037), defina a variável bash:
source db_count.ini
db_ctdy_sr=$' 7\r'
Disponível desde a versão 4.3 do bash.