2016-02-19 4 views
0

Это сводит меня с ума. Я думаю, что это связано с SynologyСравнение Shell не работает на Synology

Это выполняется на сервере Synology.

### VARIABLES ### 
LOGIF=/volume7/homes/admin/scripts/data/achclean-logi.txt 
HOWOLD=$(cat $LOGIF | wc -l) 
# END DEFINITIONS 


if ((${HOWOLD} >= 7)); then 
    echo -e "WORKS" >> 
fi 

Я получаю эту ошибку в терминале: имяскрипта: Номер строки: [Значение HOWOLD]: не найден

Если я бегу это на Linux, RedHat, она работает.

HOWOLD=$(cat dfile | wc -l) 

if ((${HOWOLD} >= 2)); then 
    echo "WORKS" 
fi 

EDIT: NO УДАЧИ !!!!!!!!

if [ "$HOWOLD" >= "7" ]; then # if 7, then it's been 7 days! 

ш: 7: неизвестный операнд

NO УДАЧИ !!!!!!!!

if (("$HOWOLD" >= "7")); then # if 7, then it's been 7 days! 

имяскрипта: Номер строки: [Значение HOWOLD]: не найдены

+0

и вы добавили отладки Постулаты как 'эхо "#dbg: HOWOLD = $ HOWOLD"' и распечатанный что? ;-) Удачи. – shellter

+1

Кроме того, если вы используете '#!/Bin/sh' в качестве вашей строки« shebang », попробуйте использовать' #!/Bin/bash' (или ksh) и посмотрите, поможет ли это. Удачи. – shellter

+0

Существует не bash, поэтому я использую sh. Я понял это и опубликую решение –

ответ

1

Я думаю, это потому, что независимо от версии Shell это Synology использует старше, то я использовать для.

Я получил это работает, используя -GE Inplace из> =

if [ ${HOWOLD} -ge 7 ]; 
+0

Мне нравится сценарий оболочки, но человек может быть болезненным порой –

+0

только FYI, я обнаружил, что эта синология печально использует Ash./Бен/зола –