Python 脚本采用带有 './[];' 的字符串参数——告诉终端将其作为文字输入进行处理?

Python 脚本采用带有 './[];' 的字符串参数——告诉终端将其作为文字输入进行处理?

我的脚本将key作为其第三个参数,并且它可以有任何类型的输入...包括 bash 抱怨的字符。

我真的很想直接从终端使用这个一次性脚本,有人可以解释一下如果看起来像这样我该如何让我的输入工作吗?

>/my/scripts $ python script.py string 123 spe[i@lk;y
/bin/sh: Syntax error: "(" unexpected
y: command not found
>/my/scripts $ python script.py string 123 "spe[i@lk;y"
/bin/sh: Syntax error: "(" unexpected

#! usr/bin/env python是的,我的脚本确实有Shebang。

答案1

脚本无法告诉bash不要应用其通常的通配符和插值规则。事实上,没有办法阻止它,尽管你可以禁用某些方面(特别是通配符和变量插值,但不能禁用括号等特殊含义)。你需要使用某种形式的引用。

话虽如此,括号错误告诉我它正在将你的 Python 读取为 shell 脚本,这意味着你可能将 shebang 行放在了错误的位置。它一定是第一的脚本的行(之前没有空行),它可能不以前导空格开头,并且如果您的示例是您实际使用的,那么您在 上缺少前导斜杠/usr/bin/env

相关内容