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.

Scripting de la cáscara bash: concatenación condicional de cadenas.

Quiero enviar condicionalmente un texto a otro script de shell. Es decir, quiero reemplazar “WARNING” por “INFO” en caso de que deb=1:

#!/usr/bin/env bash
...
if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]]
then 
    ./discord.sh --webhook-url=$url --text "WARNING: $abc"
fi

También quiero evitar otra declaración completa IF. Espero tener algo como:

deb=1 ? "INFO" : "WARNING"

¿Eso funciona? Si es así, ¿cómo se vería la declaración completa? “–texto …”

Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para enviar condicionalmente un texto a otro script de shell y reemplazar “ADVERTENCIA” con “INFO” en caso de que deb=1, se puede utilizar un operador ternario. La declaración completa se vería así:

    ./discord.sh --webhook-url=$url --text "$( (( deb == 1 )) && echo 'INFO:' || echo 'ADVERTENCIA:' ) $abc"
    

    Aquí, estamos usando la sustitución de comando con $() y el operador ternario(( )) && ||para agregar condicionalmente "INFO" o "ADVERTENCIA" al mensaje de texto. Sideb` es igual a 1, se agregará “INFO”, y si no, se agregará “ADVERTENCIA”.

    El bloque de código completo se vería así:

    #!/usr/bin/env bash
    ...
    if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]]
    then 
        ./discord.sh --webhook-url=$url --text "$( (( deb == 1 )) && echo 'INFO:' || echo 'ADVERTENCIA:' ) $abc"
    fi
    

    Esto enviará el mensaje de texto con “ADVERTENCIA” o “INFO” dependiendo del valor de deb.

Comments are closed.