0

I have a Gruntfile with grunt-exec specified as follows:

exec: {
      python_command: {
        cwd: "../../",
        command: 'python3.7 -c "MY_PYTHON_CODE"'

I want to use python3.7 if it exists on the system, but otherwise fall back to using python3. What's the easiest way to do this?

user2667066
  • 1,867
  • 2
  • 19
  • 30

1 Answers1

1

You could probe $PATH, if you're willing to write a loop.

This mostly sounds like a bash question: How do I find if cmd1 or cmd2 is available?

If you'd like to assign to a "cmd" variable, then which is your friend:

$ which xxx || which yyy || which python3.7 || which python3
/usr/bin/python3.7

If you're willing to live with some stderr noise, then this works:

$ python3.7 -c 'print(1)' || python3 -c 'print(1)'

Or tidy up the noise, if you're confident you won't see other errors:

$ python3.7 -c 'print(1)' 2> /dev/null || python3 -c 'print(1)'

$ (python3.7 -c 'print(1)' 2>&1 || python3 -c 'print(1)') | grep -v 'command not found'
J_H
  • 17,926
  • 4
  • 24
  • 44