Bash – установить переменную

Мне нужно установить переменную в моем сценарии bash

#!/usr/bin/env bash GITNAME= git config --global user.name echo " $GITNAME " 

Но похоже, что это не так.

Как это работает?

  • Пространства в назначениях переменных в сценариях оболочки
  • Почему не требуется двойная цитата `$ bar` в присваивании` foo = $ bar`?
  • Необходимы ли котировки для назначения локальной переменной?
  • создать массив
  • Задания подобны командам с статусом выхода, за исключением случаев, когда есть замена команды?
  • Почему foo = bar отличается от foo = bar?
  • Различные выходные команды
  • 3 Solutions collect form web for “Bash – установить переменную”

    Предполагая, что вы пытаетесь выполнить команду git и сохраняете ее результат в переменной, вам понадобится синтаксис $(...) , в который вы помещаете свою команду внутри parens:

     GITNAME="$(git config --global user.name)" printf '%s\n' "$GITNAME" 

    обратите внимание также, что после присваивания = нет пробела. Как указывал sjsam, лучше всего процитировать и паранов. Это связано с тем, что после разделения слов подстановки слов и расширения glob и еще нескольких шагов синтаксического анализа все еще происходит, поэтому, если ваше имя содержит, скажем * glob будет расширен, и это, вероятно, не то, что вы намереваетесь.

    Как примечание к стилю, вы, как правило, не должны использовать весь верхний регистр для имен переменных, поскольку это может привести к тому, что они столкнутся с переменными окружения.

    Пара предложений

    Что не так с ниже

     GITNAME= git config --global user.name 
    • Не используйте переменные полного верхнего регистра для вашего скрипта, поскольку они могут конфликтовать с системной переменной с похожим именем
    • Не должно быть пробелов вокруг = в форме variable=value
    • В вашем случае правая сторона является выражением, поэтому вам нужно обернуть ее в обратные метки ( ), которые сообщают оболочке, что она заключает в себе команду и должна быть заменена результатом.
    • Теперь backticks являются устаревшими, вы можете использовать [более способные] $() вместо них.
    • Наконец, дважды закажите замену команды, чтобы предотвратить разделение слов .

    Исправленное утверждение

     gitname="$(git config --global user.name)" # Error proof 

    Чтобы сохранить вывод команды как переменной в bash , используйте команду substitution $() :

     GITNAME="$(git config --global user.name)" 

    Обратите внимание, что в bash не должно быть пробелов вокруг = в объявлении переменной.

    Кроме того, будьте осторожны с наименованием переменной верхнего регистра, так как он может заменить любую переменную среды (обычно это верхнюю обложку) с тем же именем. Если это не требуется, используйте символы нижнего регистра для пользовательских переменных.

    С другой стороны, если вам просто нужно сохранить строку как переменную:

     GITNAME="git config --global user.name" 
    Interesting Posts

    Как использовать Super-L вместо Alt в XFCE для изменения размера / перемещения окон?

    Как вставлять субтитры в видео с помощью ffmpeg?

    Vim – Остановить фигурные скобки навигация от оставленных отметок

    Как скопировать из командной строки без GUI или мыши

    dd взятие недель

    Перенос содержимого блочного устройства LVM, обеспечивающего согласованность – моментальный снимок LVM?

    как работает /etc/grub.d/41_custom?

    Что делает <(команда)?

    VirtualBox: modprobe не может найти vboxguest, vboxsf, vboxvideo

    Почему tmux не может «прокручиваться» при вводе команды, которая превышает одну строку? (OSX Terminal.app)

    Opensuse 13.1 Gnome Desktop Region & Language не открывается после установки ibus

    Как написать сценарий оболочки HUSH, который проверяет результат каждой команды?

    Ошибка обратного DNS

    Вернуть слово перед совпадающим словом, используя sed

    Как обрабатывать каталог сначала, а затем файлы и каталоги под ним?

    Linux и Unix - лучшая ОС в мире.