J'essaie de définir une valeur de hachage git dans une variable d'environnement, je pensais que ce serait aussi simple que de faire ceci:
git log --oneline -1 | export GIT_HASH=$1
Mais le $1
ne contient rien. Qu'est-ce que je fais mal?
$1
Est utilisé pour accéder au premier argument d'un script ou d'une fonction. Il n'est pas utilisé pour accéder à la sortie d'une commande antérieure dans un pipeline.
Vous pouvez utiliser substitution de commande pour obtenir la sortie de la commande git
dans une variable d'environnement comme celle-ci:
export GIT_HASH=`git log --oneline -1`
Cependant ...
Cette réponse est spécialement en réponse à la question concernant le Bourne Shell et c'est la plus largement prise en charge. Votre Shell (par exemple GNU Bash) supportera très probablement la syntaxe $()
et vous devriez donc également considérer la réponse de Michael Rush.
Mais certains shells, comme tcsh
, ne prennent pas en charge la syntaxe $()
et donc si vous écrivez un script Shell pour être aussi à l'épreuve des balles que possible pour le plus grand nombre de systèmes, vous devez utiliser la syntaxe ``
malgré les limitations.
Ou, vous pouvez également le faire en utilisant $ (). (voir Quel est l'avantage d'utiliser $ () au lieu des scripts shell de backticks? )
Par exemple:
export FOO_BACKWARDS=$(echo 'foo' | rev)