LINUX.ORG.RU

Ответ на: комментарий от other_animals

Это не просто «вывод предыдущей программы», а использование переменных. С таким же успехом можно, например, делать так:

MYGROUP=$(id -g -n) ; chown -R someuser:$MYGROUP some_folder

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Только это не просто вывод из программы или какие-то переменные (при чём тут они вообще, синтаксис похож на ${}? ну пиши с `), а command substitution. Приложение выполняется в отдельной оболочке и возвращает результат.

anonymous ()
Ответ на: комментарий от anonymous

Любой текстовый буфер - это, по сути, и есть текстовая переменная. А объявлена ли она явным образом или нет - это уже другой вопрос.

В то время как ввод-вывод программ - это текстовые потоки, а не переменные.

saahriktu ★★★★★ ()
Ответ на: комментарий от anonymous

Шо то, шо то просто участок в памяти, используемый как буфер.

Выплюньте каку и разговаривайте по человечески. Вызов любой программы происходит либо с передачей аргументов в виде вектора, потому в рассматриваемом решении «someuser:$(id -g -n)» буфер будет результатом строчного выражения склейки записан в arg[4], либо, если это возможно, то можно передать через пайп (в данном случае — нет), либо в комплексе. Передавать мегабайты в виде аргументов — глупость несусветная, потому через буфер пайпа с размером в страницу намного правильнее. Заводить переменные в интерпретаторе, если они больше не понадобятся особого смысла нет, так как там всё это развернётся в приличный код, а не в какой-нибудь регистр на компилируемом языке, где это будет равнозначно.

vodz ★★★★ ()