Экспорт Bash игнорирует set -ex

В posix нет lchmod (), кроме fchmodat (), который позволяют установить разрешения для символической ссылки. Это по-прежнему не требует оценки разрешений символических ссылок.

7
27.02.2018, 15:58
1 ответ

En:

a=$(cmd)

Es un comando simple sin parte de comando, por lo que el estado de salida es el de la sustitución del comando. en:

a=$(cmd) export a

o

export a="$(cmd)"

Hay una parte de comando aquí (incluso si en algunos shells, exportestá a medio camino entre un comando y una palabra clave ), por lo que se devuelve su estado de salida. Si cmdfalla y no produce ningún resultado, export a=aún se ejecutará y tendrá éxito, por lo que exportdevolverá un estado de salida 0.

Aquí te gustaría:

a=$(cmd)
export a

O incluso mejor, deshágase de ese poco confiable set -ey realice el manejo de errores adecuado a mano:

a=$(cmd) || exit
export a

Véase, p. BashFAQ 015 :"¿Por qué no establece -e hace lo que esperaba?" para obtener más ejemplos de por qué y cómo set -epuede producir resultados inesperados.

16
27.01.2020, 20:15

Теги

Похожие вопросы