繁体   English   中英

Bash无法识别python命令

[英]Bash not recognising python command

我将此命令作为bash脚本的一部分

$(python -c "import urllib, sys; print urllib.unquote(sys.argv[0])", "h%23g")

但是当我运行它时,我得到了:

-bash: -c: command not found

好像bash错过了阅读python想法,并认为-c是命令的名称。 使用反引号时完全相同。

如何使bash识别python

Python命令从$(...)结构返回字符串“ -c”,然后bash尝试执行。

例如

python -c "import urllib, sys; print urllib.unquote(sys.argv[0])"

打印“ -c”,因此您实质上是在要求bash解释错误有效的$(-c)。

我认为您需要以下内容:

$(python -c "import urllib, sys; print urllib.unquote(sys.argv[1])" "h%23g")

这将导致h#g ,如果这是您在线上的全部内容,那么它还将尝试运行名为h#g的命令,因此我假设您实际上是将其用作较大命令的一部分。

您的版本的问题是sys.argv[0]是命令中的-c ,而urllib.unquote('-c')只会返回'-c'

sys.argv文档中

如果命令是使用解释器的-c命令行选项执行的,则argv[0]设置为字符串'-c'

结合手册页中的信息 (重点是我的):

-c 命令
指定要执行的命令(请参阅下一节)。 这将终止选项列表(以下选项作为参数传递给命令)

因此,当您使用-csys.argv[0]将为'-c' ,提供给-c的参数是脚本,因此它将不会包含在sys.argv ,并且会将任何其他参数添加到sys.argv从索引1开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM