Я пытаюсь установить значение git hash в переменную среды, я думал, что это будет так же просто, как это сделать:
git log --oneline -1 | export GIT_HASH=$1
Но $1 ничего не содержит. Что я делаю не так?
Ответ 1
$1 используется для доступа к первому аргументу в скрипте или функции. Он не используется для доступа к выходу из более ранней команды в конвейере.
Вы можете использовать подстановку команд, чтобы получить вывод команды git в переменную среды следующим образом:
export GIT_HASH='git log --oneline -1'
Однако...
Этот ответ специально отвечает на вопрос о Bourne Shell, и он наиболее широко поддерживается. Ваша оболочка (например, GNU Bash), скорее всего, поддержит синтаксис $() поэтому вы также должны учитывать ответ Майкла Раша.
Но некоторые снаряды, как tcsh, не поддерживают $() синтаксис и поэтому, если вы пишете скрипт, чтобы быть пуленепробиваемым, насколько это возможно для наибольшее количество систем, то вы должны использовать '' синтаксис, несмотря на ограничения.