Obteniendo el error de bandera larga desconocida al pasar las banderas de forma opcional.
Estoy intentando agregar la bandera opcionalmente según una condición y variables de entorno. He tomado referencia de aquí.
He ejecutado comandos como este:
export DOWN_MIGRATE=true
export NO_OF_DOWN_MIGRATIONS="2"
./scripts abc.sh ${DOWN_MIGRATE:+--migrate-only down $NO_OF_DOWN_MIGRATIONS}
Pero está arrojando el siguiente error:
main: error: unknown long flag '--migrate-only down 2'
exit status 1
El siguiente comando funciona bien:
./scripts abc.sh --migrate-only down 2
¿Cómo puedo solucionar esto?
davy.ai
Para corregir este error, necesitamos modificar el comando del script de la siguiente manera:
El problema con el comando original es que las opciones y valores no estaban separados correctamente. Al agregar
--
después del nombre de la bandera, le decimos a la shell que deje de interpretar opciones y que trate literalmente todos los argumentos subsiguientes.Además, siempre debemos encerrar las expansiones de variables y parámetros entre comillas dobles para evitar la división de palabras y la expansión de caracteres especiales. Por lo tanto, el comando modificado incluye comillas dobles alrededor de
$NO_OF_DOWN_MIGRATIONS
.El comando final se expandirá a
./scripts abc.sh --migrate-only down -- 2
(cuandoDOWN_MIGRATE
está establecido) o./scripts abc.sh
(cuandoDOWN_MIGRATE
no está establecido o está vacío).