BASH: test — too many arguments

Автор: | 11/23/2013
 

terminalВ скрипте выполняется стандартная проверка — не является ли переменная пустой:

if [ $VERS ]
then
echo "$VERS"
sort -n -t . -k 1
else
echo "Can't get versions list!"
fi

Но при запуске — bash сообщает об ошибке:

$ ./version.sh
./version.sh: line 11: [: too many arguments
Can't get versions list!

Проблема заключается в том, что в переменной $VERS содержится слишком много строк, и стандартная утилита [ (исполняемый файл /usr/bin/[ которая является аналогом утилиты /usr/bin/test) не может их обработать.

В таком случае — можно  использовать возможность bash[[, которая аналогична стандартному test — но имеет больше возможностей:

if [[ $VERS ]]
then
echo "$VERS"
sort -n -t . -k 1
else
echo "Can't get versions list!"
fi
}

Так — скрипт сработает без ошибок.