gpt4 book ai didi

python - 如何转义 Bash 命令行参数中的空格

转载 作者:行者123 更新时间:2023-11-28 21:15:27 25 4
gpt4 key购买 nike

Bash 是否支持在命令行参数中转义空格?

我有一个简单的 Python 脚本,它使用 argparse 来获取从 Bash 传递的参数,但是当我这样调用它时:

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

我得到的结果如下:

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

虽然 Bash 支持带“\”的空格,但我正在尝试

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

结果相同。

我是在滥用 Bash,还是我必须在 Python 方面处理这个问题?

最佳答案

从 bash 端来看,最可能的原因是您没有告诉我们关于您的 bash 代码的真相。你打的看起来很像 BashFAQ #50 .

运行

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

...直接从命令行完美运行,生成 sys.argv 数组 ['myscript.py', '--name=Some Text With Spaces'] 。您描述的行为与此一致:

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

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


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

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

...或一个函数(在所有其他情况下通常是合适的选择):

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

关于python - 如何转义 Bash 命令行参数中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30174841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com