在 grunt exec 中指定一个带有回退的 python 版本

Specify a python version with fallback in grunt exec

我有一个 Gruntfile,其中 grunt-exec 指定如下:

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

如果系统上存在 python3.7,我想使用它,否则我会退回到使用 python3。最简单的方法是什么?

如果你愿意写一个循环,你可以探测 $PATH。

这听起来像是一个 bash 问题: 我如何找到 cmd1cmd2 是否可用?

如果您想分配给 "cmd" 变量,那么 which 是您的朋友:

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

如果您愿意忍受一些 stderr 噪声,那么这个可行:

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

或者整理噪音,如果你有信心不会看到其他错误:

$ 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'