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

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

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

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

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

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" 
Linux и Unix - лучшая ОС в мире.