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!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.