Bash无法识别python命令

Bash无法识别python命令,python,bash,Python,Bash,我将此命令作为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 "import urllib, sys; p

我将此命令作为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 "import urllib, sys; print urllib.unquote(sys.argv[1])" "h%23g")
这将导致hg,如果这是一行中的全部内容,那么它还将尝试运行一个名为hg的命令,因此我假设您实际使用它作为更大命令的一部分

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

从:

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

结合重点矿的信息:

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


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

我想您需要如下内容:

$(python -c "import urllib, sys; print urllib.unquote(sys.argv[1])" "h%23g")
这将导致hg,如果这是一行中的全部内容,那么它还将尝试运行一个名为hg的命令,因此我假设您实际使用它作为更大命令的一部分

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

从:

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

结合重点矿的信息:

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


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

Python命令将从$返回字符串-c。。。结构,然后bash尝试执行该结构

比如说

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

打印-c,因此您实际上是在要求bash解释$-c,对于它,错误是有效的。

Python命令从您的$返回字符串-c。。。结构,然后bash尝试执行该结构

比如说

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

打印-c,因此您实际上是在要求bash解释$-c,对于它,错误是有效的。

将它放在backticks中?我猜我在windows上atm@Joran试过了,结果完全一样。python的别名是什么?它看起来可能是一个空字符串…或者可能是echo。如果编写$\python…,会发生什么。。。?你真的想执行Python脚本的输出吗?最后一个逗号是故意的并且在正确的位置吗?@ACarter Nope。参数仅用空格分隔:-c命令指定要执行的命令,请参见下一节。这将终止选项列表。以下选项作为参数传递给命令。是否将其放在backticks中?我猜我在windows上atm@Joran试过了,结果完全一样。python的别名是什么?它看起来可能是一个空字符串…或者可能是echo。如果编写$\python…,会发生什么。。。?你真的想执行Python脚本的输出吗?最后一个逗号是故意的并且在正确的位置吗?@ACarter Nope。参数仅用空格分隔:-c命令指定要执行的命令,请参见下一节。这将终止选项列表。以下选项将作为参数传递给命令。此外,除非python脚本正在打印命令,否则这不应在其自己的行中。否则,它将尝试将结果解释为命令。执行命令w/o命令替换,这样它就可以打印出来,或者使用命令替换将结果分配给变量。此外,除非python脚本正在打印命令,否则这不应该在它自己的行上。否则,它将尝试将结果解释为命令。执行不带命令替换的命令,使其仅打印输出,或者使用命令替换将结果分配给变量。