Знам, че тук имаше много подобни въпроси, но този е доста специален, моля, прочетете нататък.
Имам bash скрипт, който не прави нищо друго, освен да сравнява две числа, основно така:
[[ 1408039118 -lt 1401215749 ]]
Сега изпълнението на този скрипт извежда следната грешка:
/usr/bin/pacaur: line 179: 1408039118: syntax error: invalid arithmetic operator (error token is "")
Разбирам, че нещо не е наред, това е моят ред 179:
[[ "${depsAlastmodified[$i]}" -lt 1401215749 ]] && note "f" $"no AUR metadata for ${colorR}${depsAname[$i]}${reset} package"
Изпълнението на това през bash -x
показва:
+ [[ 1408039118 -lt 1401215749 ]]
/usr/bin/pacaur: line 179: 1406628774: syntax error: invalid arithmetic operator (error token is "")
Наистина няма нищо видимо лошо в това. Опитах допълнително отстраняване на грешки с помощта на od -c
на тази променлива:
echo ${depsAlastmodified[$i]} | od -c
Резултатът е:
+ echo '1408039118'
+ od -c
0000000 1 4 0 8 0 3 9 1 1 8 033 [ m 033 [ K
0000020 \n
0000021
Но сега не съм сигурен как да прочета това. Разбирам, че знакът за нов ред принадлежи на командата echo. Но какво точно е 033 [ m 033 [ K
? И това принадлежи ли към моя проблем?
Опитах също да пусна този номер през bc
:
echo ${depsAlastmodified[$i]} | bc | od -c
Това е резултатът:
+ echo '1408039118'
+ bc
+ od -c
(standard_in) 1: illegal character: ^[
(standard_in) 1: syntax error
(standard_in) 1: illegal character: ^[
(standard_in) 1: illegal character: K
0000000
Нещо не е наред с тази променлива. Какво друго можех да опитам? Как да поправя това?
Само за справка, това е пълната история на проблемите.
(( depsAlastmodified[i] < 1401215749 ))
за вашето сравнение. - person Tom Fenech   schedule 17.08.2014