如何在bash命令行参数中逃脱空格



bash支持在命令行参数中逃脱空间?

我有一个简单的python脚本,使用argparse获得从bash传递的参数,但是当我称其为:

myscript.py --name="Some Text With Spaces"

我得到的结果是:

args = ['Text', 'With' Spaces']
kwargs = {'name': 'Some'}

i虽然用" "支持空间,但尝试

myscript.py --name="Some Text With Spaces"

导致同一件事。

我是在滥用bash,还是我必须在python方面解决这个问题?

来自bash端,最有可能的原因是您不是告诉我们有关bash代码的真相。您所击中的东西看起来很大,例如Bashfaq#50 。

运行

myscript.py --name="Some Text With Spaces"

...直接从命令行工作完美工作,从而产生了['myscript.py', '--name=Some Text With Spaces']sys.argv数组。您描述的行为与以下方式一致:

cmd='myscript.py --name="Some Text With Spaces"'
$cmd

...这将导致sys.argv数个['myscript.py', '--name="Some', 'Text', 'With', 'Spaces"']


永远不要那样做。要么使用数组(如果您需要有条件地建立参数行,通常适用):

cmd=( myscript.py --name="Some Text With Spaces" )
"${cmd[@]}"

...或功能(通常在所有其他情况下是适当的选择):

myscript() { myscript.py --name="Some Text With Spaces" "$@"; }
myscript

相关内容

  • 没有找到相关文章

最新更新