es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para corregir este error, necesitamos modificar el comando del script de la siguiente manera:

    ./scripts abc.sh ${DOWN_MIGRATE:+--migrate-only down -- $NO_OF_DOWN_MIGRATIONS}
    

    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 (cuando DOWN_MIGRATE está establecido) o ./scripts abc.sh (cuando DOWN_MIGRATE no está establecido o está vacío).

Comments are closed.