В чем разница, объясняющая разные результаты разных способов присвоения значений в командной строке?

В чем разница, объясняющая различные результаты этих команд? 117] set a=2; echo $a

  • 4
    задан 14 July 2013 в 21:14

    1 ответ

    1. a=2 echo $a

      Результат: произведите пустую строку

      Причина: Bash обеспечивает подмножество своих переменных (среда) к каждой программе, которую Вы называете с ним (можно указать который с export встроенный). Добавление префикса команды с, например. a=2 говорит удару добавлять $a (со значением 2) к среде, но

      • только для той конкретной программы, и
      • не к набору переменных, используемых bash самостоятельно.

      Так, если echo была программа (это - на самом деле встроенное), это получило бы $a наряду с другими переменными среды..., но echo не заботится о переменных среды - это просто, слюна поддерживает аргументы, которые Вы даете ему. С тех пор $a не определяется как переменная в bash самостоятельно, Ваша команда эквивалентна пустому echo, который испускает символ новой строки, давая Вам пустую строку.

    1. set a=2 echo $a

      Результат: никакой вывод

      Причина: Это не делает то, что Вы думаете, что это - на самом деле, echo команду не называют вообще. Когда set назван без опций, это устанавливает позиционные параметры на аргументы, которые Вы даете ему в порядке. Вы видите это с несколькими дополнительными командами:

      $ set a=2 echo $a
      $ echo $1
      a=2
      $ echo $2
      echo
      

      ... и echo $3 дает пустую строку, потому что Вы пытались установить $3 кому: $a, который не существует.

    1. a=2; echo $a

      Результат: вывод 2 (наконец!)

      Причина: Это - корректный способ получить то, что Вы хотите: Вы устанавливаете переменную $a кому: 2, и затем Вы звонили echo с $a как аргумент.

    1. set a=2; echo $a

      Результат:

      • Если $a уже установлен на 2: вывод 2
      • Если $a не установлен: произведите пустую строку

      Причина: Надо надеяться, можно разработать это для себя, учитывая объяснения выше.

    7
    ответ дан 14 July 2013 в 21:14

    Другие вопросы по тегам:

    Похожие вопросы: