functions declaring bash function

declaring - bin bash functions



¿Cuál es la forma correcta de probar un valor de retorno de la función bash? (3)

Este error parece producirse si la función devuelve más de una palabra.

Por ejemplo, 1 2 .

Solo citarlo:

"$(func arg)"

Muestra:

$ if [[ 1 2 ]] ; then echo 1 ; fi -bash: conditional binary operator expected -bash: syntax error near `2'' $ if [[ "1 2" ]] ; then echo 1 ; fi 1

Y si compara 0 vs no 0 solo use

if [[ "$(func arg)" != "0" ]]

Me gustaría probar un valor de retorno de la función bash en una sentencia if como esta:

if [[ func arg ]] ; then …

pero recibo mensajes de error como: operador binario condicional esperado.

¿Cuál es la forma correcta de hacer esto?

Lo es:

if [[ $(func arg) ]] ; then ...


Esto fue útil para mí, así que agregaría los siguientes detalles.

Si necesita probar dos condiciones, una es el estado de salida de la función / comando y la otra, por ejemplo, el valor de la variable, use esto:

if func arg && [[ $foo -eq 1 ]]; then echo TRUE; else echo FALSE; fi


Si fuera el código de salida y no el resultado, podrías usar

if func arg; then ...

Si no puede hacer que la función devuelva un código de salida apropiado (con return N ), y tiene que usar resultados de cadena, use @Alex Gitelman answer.

$ help if :

if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi

Ejecute comandos basados ​​en condicional.

La lista if COMMANDS se ejecuta. Si su estado de salida es cero, entonces se ejecuta la lista then COMMANDS . De lo contrario, cada lista de elif COMMANDS se ejecuta sucesivamente, y si su estado de salida es cero, se ejecuta la correspondiente lista then COMMANDS y se completa el comando if. De lo contrario, se ejecuta la lista `Otros COMANDOS '', si está presente. El estado de salida de todo el constructo es el estado de salida del último comando ejecutado, o cero si ninguna condición es verdadera.

Estado de salida: devuelve el estado del último comando ejecutado.