shell脚本无法将命令行的输出保存到变量中

and*_*dio 3 variables shell command-line backticks

我正在尝试执行shell命令,然后使用shell脚本将输出保存到变量中.所以我使用这样的反引号:

out=`ls -l`
print $out
Run Code Online (Sandbox Code Playgroud)

该代码工作正常,我可以将它用于任何其他shell命令,但当我尝试做'python --version'来检查python版本.我有一个奇怪的问题.反引号不适用于"python --version"命令,当它与任何其他命令一起正常工作时,它将输出打印到屏幕并且不向变量$ out保存任何内容.所以,如果我这样做:

out =`python --version`
print "my python version is "$out
Run Code Online (Sandbox Code Playgroud)

结果:

Python 2.6.1
my python version is 
Run Code Online (Sandbox Code Playgroud)

我也尝试用$()替换反引号,但没有运气.任何的想法 ?

Pau*_*aul 10

你的等号前有一个空格:

out =`python --version`
Run Code Online (Sandbox Code Playgroud)

应该:

out=`python --version`
Run Code Online (Sandbox Code Playgroud)

更新

python也将版本字符串输出到stderr,因此您需要将其重定向到stdout:

out=`python --version 2>&1`
Run Code Online (Sandbox Code Playgroud)

  • perfecto,Thanx很多.现在它工作正常.就像你说的,问题是python将它输出到stderr.out = \`python --version 2>&1 \`有效!感谢名单. (2认同)