Python 如何使用 shell 变量中带引号的参数?

Python 如何使用 shell 变量中带引号的参数?

我正在尝试参数化对 pytest 的调用,如下所示:

export OPTIONS="tests -k 'not e2e'"
pytest ${OPTIONS}

pytest由于变量中的引号,调用失败。将选项直接放入调用中效果很好。

我试过:

pytest ${OPTIONS} 
ERROR: file not found: tests -k 'not e2e'

pytest $(eval echo "${OPTIONS}") # removes all quotes
ERROR: file not found: e2e

pytest $(printf %s ${OPTIONS})

如何使pytest调用以参数化方式工作?

更新

回答包含一个有效的解决方案:

eval "OPTIONS=($OPTIONS)" # (opt.) convert an existing string to an array

export OPTIONS=(tests -k 'not e2e')
pytest "${OPTIONS[@]}"

非常感谢您指出这一点。我已经搜索了好几个小时了。

答案1

你试过这个吗?

export OPTIONS="tests -k \'not e2e\'"

它必须与eval

相关内容