Establecer un argumento con bash [duplicado]
Con frecuencia ejecuto un comando bash simple:
rpm -Uvh --define "_transaction_color 3" myPackage.rpm
que funciona correctamente.
Pero ahora estoy intentando escribirlo en un archivo bash y hacerlo más flexible:
#!/bin/bash
INSTALL_CMD=rpm
INSTALL_OPT="-Uvh --define '_transaction_color 3'"
${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm
Sin embargo, esto sigue generando el error:
error: Macro % has illegal name (%define)
El error proviene de cómo se maneja --define
la cotización .
Probé una variedad de escapes, diferentes frases, incluso hice una matriz, manejada con ._transaction_color
INSTALL_OPT
${INSTALL_OPT[@]}
Hasta ahora, mis intentos no han funcionado.
Claramente, lo que quiero es extremadamente simple. Simplemente no estoy seguro de cómo lograrlo.
¿ Cómo puedo hacer que bash maneje mi --define
argumento correctamente?
El problema es que las cotizaciones no se procesan después de la sustitución de variables. Parece que estás intentando definir una macro llamada '_transaction_color
.
Intente usar una matriz:
INSTALL_OPT=(-Uvh --define '_transaction_color 3')
entonces:
"$INSTALL_CMD" "${INSTALL_OPT[@]}" myPackage.rpm
Es importante poner ${INSTALL_OPT[@]}
comillas dobles para obtener la recotización.