- я не понял - чего ты не понял командный интерпретатор - он такой интерпретат, михалыч (ok), 18:24 , 08-Июл-17 (1)
> Если несколько аргументов у скрипта, то команда с проверкой наличия строки аргументов > выдаёт сообщение об ошибке > [ "$@" ] - не работает, пишет "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 вот так!
- 1 Ваша ошибка -- в рассчётах Пожроюности - в man bash , Andrey Mitrofanov (?), 10:01 , 09-Июл-17 (2)
> Если несколько аргументов у скрипта, то команда с проверкой наличия строки аргументов [ "$1" ] > [ "$@" ] >Но я рассчитывал, > что раз в кавычках, значит все аргументы будут просто подставлены как > одна строка.
Ваша ошибка -- в рассчётах. Пожроюности - в man bash.
- Две вещи 1 - это массив аргументов из командной строки, а вся командная, ACCA (ok), 19:18 , 11-Июл-17 (7)
> Люди добрые, объясните пожалуйста, чего я не понял?Две вещи: 1. $@ - это массив аргументов из командной строки, а "вся командная строка" лежит в $* 2. [ - это команда test. Ей нужен оператор, что же нужно сделать Напиши так и будет тебе счастье: [ -n "$*" ]
|