Cómo definir una variable de tipo string que contenga espacios y comillas en el shell de Bash.
Un script de demostración en bash, build.sh, se muestra así:
#!/bin/bash
EXTRA_FLAG="-ldflags=\"-H windowsgui\""
EXTRA_FLAG="-ldflags='-H windowsgui'"
EXTRA_FLAG='-ldflags="-H windowsgui"'
EXTRA_FLAG=-ldflags=\"-H windowsgui\"
go build ${EXTRA_FLAG}
Quiero obtener el comando resultante como: go build -ldflags="-H windowsgui"
, pero ninguna de estas variables funciona como se espera, dando como resultado:
go build '-ldflags="-H' 'windowsgui"'
go build '-ldflags=\'\''-H' 'windowsgui\'\'\''
go build '-ldflags="-H' 'windowsgui"'
go build -ldflags=-H windowsgui
Parece que las comillas simples auto-generadas ('
) rompen el comando, ¿entonces cuál es la forma correcta de definir una variable de esta manera?
davy.ai
Para definir una variable como
-ldflags="-H windowsgui"
en Bash, puedes usar cualquiera de los siguientes formatos:Asegúrate de escapar cualquier espacio con el símbolo
\
, como se muestra en el tercer ejemplo, para asegurar que la variable se interprete correctamente en el comando.