使用 python 临时环境变量运行 shell 脚本

问题描述 投票:0回答:1

我正在尝试找到一种方法来运行带有临时环境变量的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

我非常感谢您帮助找到解决方案

python linux shell redhat
1个回答
0
投票

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 ...
© www.soinside.com 2019 - 2024. All rights reserved.