Здесь работает ваш сценарий. Единственный способ заставить его выдать ту же ошибку, о которой вы сообщаете, - это заставить переменную db_ctdy_sr
содержать новую строку
:
Добавить новую строку:
source db_count.ini
db_ctdy_sr=$' 7\r'
А затем протестировать скрипт:
$ ./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!
Это могло произойти, если файл db_count.ini
содержит символы возврата каретки DOS.
Выполните:
$ sed -n l db_count.ini
db_ctdy_sr= 7\r$
(или аналогичный), чтобы увидеть \ r
в файле.
удалить возврат каретки, отредактировав файл и удалив недостающие символы, или изменив эту строку:
n_db_sr=${db_ctdy_sr// /}
Кому:
n_db_sr=${db_ctdy_sr//[ $'\r'}]}
Или, в более общем случае, чтобы удалить все управляющие символы:
n_db_sr=${db_ctdy_sr//[ $'\001'-$'\037']}
Чтобы убедиться, что порядок сортировки будет не изменять предполагаемый порядок значений ascii с 1 (восьмеричное 001) до 31 (восьмеричное 037), установите переменную bash:
shopt -s globasciiranges
Доступно, начиная с версии bash 4.3.