我正在尝试找到一种方法来运行带有临时环境变量的Python脚本地下。我使用以下脚本来说明我的方法,但它不起作用。
示例.py
import os
import sys
name = os.environ.get('CONF_NAME') + '.yaml'
print('Execution of the file {} '.format(name))
示例.sh
OUTPATH="/home/user1/samples"
ERRPATH="/home/user1/samples"
PREFIX="CONF_NAME=\"$1\""
EXECUTION_COMMAND="python"
FILE_TO_EXECUTE="example.py"
echo saving stderr to ${ERRPATH}
echo saving stdout to ${OUTPATH}
${PREFIX} nohup ${EXECUTION_COMMAND} ${FILE_TO_EXECUTE} > ${OUTPATH}/example_output.out 2> ${ERRPATH}/example_error.out &
但是我收到了表格错误
example.sh: 10: CONF_NAME="conf_file_abc": not found
当我运行命令时
sh example_two.sh conf_file_abc
我非常感谢您帮助找到解决方案
Bash 不是一种宏语言。扩展的结果是什么不是你输入的内容。
如果 you 输入
CONF_NAME="$1"
Bash 会解析引号、扩展 $1 并分配变量。
如果您输入
${PREFIX}
,则不会解析或扩展 扩展结果。它是扩展的结果,并且使用该结果。展开的结果是 CONF_NAME="<first arg>"
字面上,包括 "
引号。
研究 shell 介绍。请参阅引用和 shell 扩展的介绍。 https://mywiki.wooledge.org/BashFAQ/050有点相关。
就这样做:
export CONF_NAME="$1"
或者:
CONF_NAME="$1"
...
CONF_NAME="$CONF_NAME" nohup ...