> Если несколько аргументов у скрипта, то команда с проверкой наличия строки аргументов
> выдаёт сообщение об ошибке
> [ "$@" ] - не работает, пишет "unexpected operator". Но я рассчитывал,
> что раз в кавычках, значит все аргументы будут просто подставлены как
> одна строка.
> Str=$@ ; [ "$Str" ] - работает правильно.
> Люди добрые, объясните пожалуйста, чего я не понял?
> Проверял в sh и в bash.
> Спасибо я не понял - чего ты не понял? ))
командный интерпретатор - он такой интерпретатор, одним словом, тот ещё фрукт,
ну вот так вот он интерпретирует ))
а если серьёзно, то зачем вам это?
ну в смысле команда [ ] - это же эквивалент команды test
что собрались протестировать? всю строку из аргументов?
может в вашем случае можно обойтись проверкой общего количества ($#) переданных аргументов
или проверкой какого-то конкретного аргумента, второго там или третьего ($2 $3)
но если сильно хочется из разряда чего-то странного, то можно так
#!/bin/sh# ./test.sh 1 blah bla2
if [ "$(echo -n $@)" = "1 blah bla2" ] ; then
echo OK
else
echo BAD
fi
или, сдаётся мне, это был риторический вопрос ))
if [ $# -eq 0 ] ; then
echo "enter the arguments"
else
:
fi
вот так!