/ commande / bash introuvable lors de la définition d'une variable - linux, macos, bash, shell, zsh

commande bash introuvable lors de la définition d'une variable - linux, macos, bash, shell, zsh

J'écris un script shell dans lequel je configure quelques variables, dont la valeur est la sortie des commandes.

Les erreurs que je reçois sont:

$  $tag_name="proddeploy-$(date +"%Y%m%d_%H%M")"
-bash: =proddeploy-20141003_0500: command not found

maintenant, j'ai lu autres questions similaires et sur cette base, j'ai essayé différentes choses:

division de commande en deux appels

$ $deploy_date=date +"%Y%m%d_%H%M"
bash: =date: command not found
$ $tag_name="proddeploy-$deploy_date"
bash: proddeploy- command not found

essayé d'utiliser des backticks

$ $tag_name=`proddeploy-$(date +"%Y%m%d_%H%M")`
bash: proddeploy-20141003_1734: command not found
bash: =: command not found

essayé d'utiliser $()

$ $tag_name=$(proddeploy-$(date +"%Y%m%d_%H%M"))
bash: proddeploy-20141003_1735: command not found
bash: =: command not found

Mais dans tous les cas, la sortie de la commande est exécutée. comment puis-je faire pour arrêter d'exécuter la sortie de commande et juste stocker en tant que variable? J'ai besoin de ça pour travailler sur ZSH et BASH.

Réponses:

5 pour la réponse № 1

Vous définissez des variables avec var=string ou var=$(command).

Donc, vous devez supprimer le premier $ et tout autre signe autour =:

tag_name="proddeploy-$(date +"%Y%m%d_%H%M")"

deploy_date=$(date +"%Y%m%d_%H%M")
^^                   ^

De Substitution de commande:

La deuxième forme `COMMAND` est plus ou moins obsolète pour Bash, car il a des problèmes d'imbrication (les backticks "internes" doivent être évités) et des personnages échappés. Utilisation $(COMMAND), c’est aussi POSIX!

Aussi, $() vous permet de faire un nid, ce qui peut être pratique.