Команда `/usr/bin/nxloadconfig --check` сообщает об ошибке: (standard_in) 1: syntax error /usr/bin/nxloadconfig: line 696: [: -ne: ожидается использование унарного оператора В строках 696-697 находится проверка версии CUPS: [ $(echo "`strings $COMMAND_CUPSD | egrep 'CUPS\/1\.' | head -1 | sed 's|CUPS\/\(1\.[0-9]\+\).*|\1|'` >= 1.2" | bc) -ne 1 ] && \ WARNING="yes" && echo "Warning: Invalid cupsd version of \"$COMMAND_CUPSD\". Need version more or equal than 1.2." Пустой результат появляется в цепочке: strings $COMMAND_CUPSD | egrep 'CUPS\/1\.' Дело в том, что в строках файла /usr/sbin/cupsd нет подстроки "CUPS/1.", зато есть "CUPS/%d" и CUPS/2.1 По смыслу условия "версия CUPS больше 1.2" думаю, будет правильным модифицировать регулярное выражение egrep так: strings $COMMAND_CUPSD | egrep 'CUPS\/[1-9]\.' Или упростить всёю цепочку (sed может и грепать, и взять только первую строку из найденных): [ $(echo "`strings $COMMAND_CUPSD | sed -n '/^CUPS\/[0-9.]*$/{s/[^0-9.]//gp;q}'` >= 1.2" | bc) -ne 1 ] && \ WARNING="yes" && echo "Warning: Invalid cupsd version Но IMHO в Altlinux надёжнее извлечь версию из rpm: rpm -qf $COMMAND_CUPSD | cut -d - -f 2 | sed s/[^0-9.]//g
Ошибся в выражении для sed. Правильно и ещё короче строка 696 будет такой: [ $( strings /usr/sbin/cupsd | sed -n '/^CUPS\/[0-9.]*$/s|.*/\([0-9]\+\.[0-9]\+\)[^0-9].*|\1 >= 1.2|p' | bc ) -ne 1 ] && \