3

i'm trying to do shell command then save the output into variable using shell script. So i use backticks like this :

out=`ls -l`
print $out

that code is working fine,and i can use it for any other shell command, but when i try to do 'python --version' to check python version. i got weird problem. The backtick is not working for "python --version" command while it's working fine with any other commands, it prints the output to the screen and save nothing to the variable $out. so if i do :

out =`python --version`
print "my python version is "$out

result:

Python 2.6.1
my python version is 

also i tried to use $() to replace backtick , but no luck. Any idea ?

1
  • 1
    Bacticks are the old way of doing it. Using $() is much more readable. Commented May 7, 2012 at 18:59

1 Answer 1

10

You have a space before your equals sign:

out =`python --version`

Should be:

out=`python --version`

Update

Also python outputs the version string to stderr, so you need to redirect it to stdout:

out=`python --version 2>&1`
Sign up to request clarification or add additional context in comments.

2 Comments

perfecto, Thanx a lot. now it works fine. Like you said , the problem is that python output it to stderr. out=`python --version 2>&1` works! Thanx.
I was working on writing a pre-commit hook and also couldn't figure out why the output wasn't being saved. Your 2>&1 trick worked great! Thanks!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.