Подтвердить что ты не робот

Вывод трубы в команду экспорта переменных среды

Я пытаюсь установить значение git hash в переменную среды, я думал, что это будет так же просто, как это сделать:

git log --oneline -1 | export GIT_HASH=$1

Но $1 ничего не содержит. Что я делаю не так?

4b9b3361

Ответ 1

$1 используется для доступа к первому аргументу в скрипте или функции. Он не используется для доступа к выходу из более ранней команды в конвейере.

Вы можете использовать подстановку команд, чтобы получить вывод команды git в переменную среды следующим образом:

export GIT_HASH='git log --oneline -1'

Однако...

Этот ответ специально отвечает на вопрос о Bourne Shell, и он наиболее широко поддерживается. Ваша оболочка (например, GNU Bash), скорее всего, поддержит синтаксис $() поэтому вы также должны учитывать ответ Майкла Раша.

Но некоторые снаряды, как tcsh, не поддерживают $() синтаксис и поэтому, если вы пишете скрипт, чтобы быть пуленепробиваемым, насколько это возможно для наибольшее количество систем, то вы должны использовать '' синтаксис, несмотря на ограничения.