LINUX.ORG.RU
Ответ на: комментарий от Clockwork

Но ведь всю жизнь писали как в сабже. У меня вон даже явно записанный env не работает, а уж в нём-то ; точно не нужна.

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

Значит всю жизнь ничего не выводило.

Задумайся, почему вообще работает echo $VAR, что подставляет значение вместо $VAR и почему env уже поздно что-то делать.

t184256 ★★★★★
()
env AAA="BBB" /bin/bash -c 'echo $AAA'
arax ★★★
()
~ $ set -x
~ $ env AAA="BBB" echo "$AAA"
+ env AAA=BBB echo ''

~ $ 

$AAA есть пустая строка, вот её echo и выводит.

Aceler ★★★★★
()
Последнее исправление: Aceler (всего исправлений: 1)
Ответ на: комментарий от forest22

Я думаю, оператора можно называть оператором, если вы учились в школе в 90-ые.

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

Но ведь всю жизнь писали как в сабже.

Никогда не писали.

У тебя переменная «$AAA» резольвится в значение не командой echo, а шеллом, до запуска команды. Вот внутри самой echo (допустим, ты правишь /usr/bin/echo, и шелл не обрабатывает её как встроенную команду) доступ к значению $AAA так будет.

Для каждой команды сперва шелл раскрывает все переменные, джокеры и прочую фигню в значения, в том числе всякие [0-9]* в имена соответствующих файлов, и уже после этого запускает команду на исполнение. В твоём случае это всё является единой командой, поэтому раскрытие $AAA в её значение происходит до присваивания. Как верно сказали, присвой отдельной командой, потом вызывай echo — так будет работать: AAA=BBB ; echo "$AAA"

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от forest22

Так что «команда» или «оператор»?

Забей, это старпёрские заскоки.

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.