我在shell脚本中调用python脚本,并将参数传递给这个python作业。参数将从配置文件中加载。在shell脚本中进行测试时,调用的变量将正确回显。在参数解析器中,HIVE_标记的参数都被标记为None。
Shell脚本
set -e
if \[ ! -z "$1" \]
then
config_file="$1"
else
config_file="./env.sh"
fi
${venv_path} ${mpw_path}/src/main_sample.py \
\--MPW_BASE "${mpw_base}" --MPW_PATH "${mpw_path}" \
\--FUNC "${trueup}" --TRUEUP_FILE "${trueup_file}" \
\--TRUEUP_FILE_MANUAL "${trueup_file_manual}" --LATEST_TRUEUP_STAMP "${latest_trueup_stamp}" \
\--SQL_driver "${SQL_driver}" --SQL_server "$SQL_server" \
\--SQL_port "${SQL_port}" --SQL_db "${SQL_db}" \
\--LANDING_ZONE "${landing_zone}" --TIME_STAMP "${time_stamp}" \\
\--HIVE_driver "${HIVE_driver}" --HIVE_host "${HIVE_host}" \
\--HIVE_ZKNamespace "${HIVE_zknamespace}" --HIVE_ServiceDiscoveryMode "${HIVE_servicediscoverymode}" \
\--HIVE_AuthMech "${HIVE_authMech}" --HIVE_KrbServiceName "${HIVE_krbservicename}" \\
\--HIVE_KrbHostFQDN "${HIVE_krbhostfqdn}" --HIVE_SSP_tezqueue "${HIVE_ssp_tezqueue}"配置文件
HIVE_driver=""
HIVE_host=""
HIVE_zknamespace=""
HIVE_servicediscoverymode=""
HIVE_authMech=""
HIVE_krbserviceame=""
HIVE_krbhostfqdn=""
HIVE_ssp_tezqueue=""明显的推理缺少配置变量值。
Python脚本
parser = argparse.ArgumentParser(description='MPW Arg Parser')
parser.add_argument('--MPW_BASE', help='base directory of project')
parser.add_argument('--MPW_PATH', help='directory of the repo')
parser.add_argument('--FUNC', help='function to done')
parser.add_argument('--TRUEUP_FILE', help='mapping to be passed in writecustomertrueup')
parser.add_argument('--TRUEUP_FILE_MANUAL', help='trueup exercise of previous week')
parser.add_argument('--LATEST_TRUEUP_STAMP', help='trueup stamp')
parser.add_argument('--SQL_driver', help='SQL Driver')
parser.add_argument('--SQL_server', help='SQL Server')
parser.add_argument('--SQL_port', help='SQL Port')
parser.add_argument('--SQL_db', help='DATABASE to connect')
parser.add_argument('--LANDING_ZONE', help='Landing zone of MPW')
parser.add_argument('--TIME_STAMP', help="time stamp")
parser.add_argument('--HIVE_driver', help='EDL Driver')
parser.add_argument('--HIVE_host', help='EDL Host')
parser.add_argument('--HIVE_ZKNamespace', help='EDL ZKNamespace')
parser.add_argument('--HIVE_ServiceDiscoveryMode', help='EDL Service Discovery Mode')
parser.add_argument('--HIVE_AuthMech', help='EDL Auth Mech')
parser.add_argument('--HIVE_KrbServiceName', help = 'KrbServiceName')
parser.add_argument('--HIVE_KrbHostFQDN', help = 'For EDL connection')
parser.add_argument('--HIVE_SSP_tezqueue', help = 'For EDL connection')
args, unknown = parser.parse_known_args()
if args.MPW_BASE is None or args.MPW_PATH is None or args.FUNC is None \
or args.TRUEUP_FILE is None or args.TRUEUP_FILE_MANUAL is None \
or args.LATEST_TRUEUP_STAMP is None or args.SQL_driver is None \
or args.SQL_server is None or args.SQL_port is None or args.SQL_db \
is None or args.LANDING_ZONE is None or args.TIME_STAMP is None \
or args.HIVE_driver is None or args.HIVE_host is None or args.HIVE_ZKNamespace \
is None or args.HIVE_ServiceDiscoveryMode is None or args.HIVE_AuthMech \
is None or args.HIVE_KrbServiceName is None or args.HIVE_KrbHostFQDN is None \
or args.HIVE_SSP_tezqueue is None:
logging.error(str(args))
logging.error(str(unknown)) args错误:
22/11/21 13:16:02 ERROR \<module\> Namespace(FUNC='TRUEUP', HIVE_AuthMech=None, HIVE_KrbHostFQDN=None, HIVE_KrbServiceName=None, HIVE_SSP_tezqueue=None, HIVE_ServiceDiscoveryMode=None, HIVE_ZKNamespace=None, HIVE_driver=None, HIVE_host=None未知错误:
22/11/21 13:16:02 ERROR \<module\> \[' '\]我试图更改config和shell脚本文件中的变量名,并期望它正确读取参数,但仍然没有为HIVE_命名的变量获得任何值。
发布于 2022-11-21 18:49:30
此代码不对配置文件执行任何操作,只需将其名称/路径存储在变量中。为了使用这些值,需要读取配置。
set -e
if [ ! -z "$1" ]
then
config_file="$1"
else
config_file="./env.sh"
fi
. "${config_file}"https://stackoverflow.com/questions/74523411
复制相似问题