/ No se encontró el comando / bash al configurar una variable: linux, macos, bash, shell, zsh

comando bash no encontrado al establecer una variable - linux, macos, bash, shell, zsh

Estoy escribiendo un script de shell donde estoy configurando pocas variables, cuyo valor es la salida de los comandos.

Los errores que recibo son:

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

ahora leí otras preguntas similares Y basándome en ello, probé varias cosas:

dividiendo el comando en dos llamadas

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

intentado usar backticks

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

intentado usar $()

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

Pero en todos los casos se ejecuta el comando de salida. ¿Cómo hago para que deje de ejecutar la salida del comando y solo almacene como una variable? Necesito esto para trabajar en ZSH y BASH.

Respuestas

5 para la respuesta № 1

Se definen variables con var=string o var=$(command).

Así que tienes que quitar el lider $ y cualquier otra señal alrededor =:

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

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

De Sustitución de comandos:

La segunda forma `COMMAND` Es más o menos obsoleto para Bash, ya que tiene algunos problemas con el anidamiento (es necesario escapar los backtick "internos") y los personajes que escapan. Utilizar $(COMMAND), también es POSIX!

También, $() Te permite anidar, lo que puede ser útil.