В чем разница, объясняющая различные результаты этих команд? 117] set a=2; echo $a
a=2 echo $a
Результат: произведите пустую строку
Причина: Bash обеспечивает подмножество своих переменных (среда) к каждой программе, которую Вы называете с ним (можно указать который с export
встроенный). Добавление префикса команды с, например. a=2
говорит удару добавлять $a
(со значением 2
) к среде, но
bash
самостоятельно.Так, если echo
была программа (это - на самом деле встроенное), это получило бы $a
наряду с другими переменными среды..., но echo
не заботится о переменных среды - это просто, слюна поддерживает аргументы, которые Вы даете ему. С тех пор $a
не определяется как переменная в bash
самостоятельно, Ваша команда эквивалентна пустому echo
, который испускает символ новой строки, давая Вам пустую строку.
set a=2 echo $a
Результат: никакой вывод
Причина: Это не делает то, что Вы думаете, что это - на самом деле, echo
команду не называют вообще. Когда set
назван без опций, это устанавливает позиционные параметры на аргументы, которые Вы даете ему в порядке. Вы видите это с несколькими дополнительными командами:
$ set a=2 echo $a
$ echo $1
a=2
$ echo $2
echo
... и echo $3
дает пустую строку, потому что Вы пытались установить $3
кому: $a
, который не существует.
a=2; echo $a
Результат: вывод 2
(наконец!)
Причина: Это - корректный способ получить то, что Вы хотите: Вы устанавливаете переменную $a
кому: 2
, и затем Вы звонили echo
с $a
как аргумент.
set a=2; echo $a
Результат:
$a
уже установлен на 2
: вывод 2
$a
не установлен: произведите пустую строкуПричина: Надо надеяться, можно разработать это для себя, учитывая объяснения выше.