我想我之前已经问过这个问题,但是我找不到以前的问题。
所以,让我说我有一个python脚本helloPython.py,它打印一些东西。现在我想在bash脚本中调用该脚本,可以完成like this。到目前为止一切都很好。
但是,正确的python路径并不总是在PATH中找到的第一个python可执行文件,因此我声明了一个包含默认路径的全局变量,并且a read in function允许用户为自定义路径提供自定义路径。 python可执行文件。
详细说明,这是我的代码:
#!/bin/bash
PYTHON="/usr/bin/python" #default address
function helloPython {
return PYTHON helloPython.py;
}
function readin {
## Read in the options
for i in "$@"
do
case $i in
-p=*|--python=*)
PYTHON="${i#*=}"
shift
;;
*)
;;
esac
done
}
readin
helloPython
这给出:" return:PYTHON:需要数字参数"
或者,return $(PYTHON helloPython.py);
给出" PYTHON:命令未找到"并且return $($(PYTHON) checkPythonVersion.py);
给出" PYTHON:找不到命令\ n checkPythonVersion.py:找不到命令"
所以现在我的问题是:如何以可以从bash中执行python脚本的方式使用全局变量PYTHON?
答案 0 :(得分:1)
您可以简化脚本:
#!/bin/bash
PYTHON="/usr/bin/python"
for i in "$@"
do
case $i in
-p=*|--python=*)
PYTHON="${i#*=}"
shift
;;
esac
done
"$PYTHON" helloPython.py
一些注意事项:
"$@"
函数中使用readin
,但在不提供参数的情况下调用此函数。在这种情况下,您应该按以下方式编写命令,以允许调用上下文中的所有参数按原样传递:
readin "$@"
答案 1 :(得分:0)
不要return
,只需执行命令:
helloPython() {
"${PYTHON}" helloPython.py;
}
return
告诉函数自己的退出代码,在这种情况下,它不是你需要的。