Не разобрался с подстановкой $@, Alexander7, 08-Июл-17, 13:43 [смотреть все]Если несколько аргументов у скрипта, то команда с проверкой наличия строки аргументов выдаёт сообщение об ошибке[ "$@" ] - не работает, пишет "unexpected operator". Но я рассчитывал, что раз в кавычках, значит все аргументы будут просто подставлены как одна строка. Str=$@ ; [ "$Str" ] - работает правильно. Люди добрые, объясните пожалуйста, чего я не понял? Проверял в sh и в bash. Спасибо
|
- Не разобрался с подстановкой $@, михалыч, 18:24 , 08-Июл-17 (1)
- Не разобрался с подстановкой $@, Alexander7, 10:09 , 09-Июл-17 (3)
> а если серьёзно, то зачем вам это? > что собрались протестировать? всю строку из аргументов? > может в вашем случае можно обойтись проверкой общего количества ($#) переданных аргументов Проверка $@ появилась чисто машинально - суть аргументов скрипта в том, это текстовые данные и надо было проверить, что строка не пустая. Когда понял, что получился бред, заменил на проверку количества аргументов, т.к. аргументов может не быть, но если есть, то это не пустые строки. Практически, задача решена. Ну вот осталось чувство глубокого не-удовлетворения от непонимания этой подстановки. Теоретически, количество аргументов и пустая строка - это две большие разницы. И нельзя проверять наличие текста по числу аргументов, аргумент может и есть, но он пустой. scrpt '' - аргумент один, а текста нет. Вероятно, логика разбора внутренних команд типа [ ] и echo отличается от разбора вызова внешних программ, а описания этого феномена я не нахожу.
- Не разобрался с подстановкой $@, Andrey Mitrofanov, 10:01 , 09-Июл-17 (2)
- Не разобрался с подстановкой $@, ACCA, 19:18 , 11-Июл-17 (7)
|