
例子如下
$ set -x # enable debug output from bash $ export PYTEST_FLAG='--pytest-args -k "not (xmllint or pclint)"'; $ pytest ${PYTEST_FLAG} + pytest --pytest-args -k '"not' '(xmllint' or 'pclint)"' # this line is the debug output ... error 从第四行可以看出,本来"not (xmllint or pclint)"应该作为一个字符串传递给pytest命令,但是 bash 在 variable expansion 后把"not, (xmllint 和 pclint)" 用单引号圈了起来,似乎因为他们含有一些特殊字符?如何阻止 bash 这种行为呢?谢谢
我最终想要 Bash 执行的命令为:
$ pytest --pytest-args -k "not (xmllint or pclint)" 1 AoEiuV020 2021-06-30 14:52:23 +08:00 叠个 bash, bash -c "pytest ${PYTEST_FLAG}" |
2 xuboying 2021-06-30 14:53:09 +08:00 declare -a PYTEST_FLAG=(--pytest-args -k "not (xmllint or pclint)") pytest "${PYTEST_FLAG[@]}" 建议了解一下 shellcheck |
3 zbinlin 2021-06-30 21:03:04 +08:00 这样? eval pytest "${PYTEST_FLAG}" |