BASH: test – too many arguments

Автор: | 23/11/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
}

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