配置文件能否被其他配置文件引用?Shell脚本报错问询
Shell配置文件引用与变量赋值错误修复
问题场景
我有多个包含Job的JobStream,计划创建一个通用配置文件(适用于所有JobStream)和每个Job对应的独立配置文件。想通过source命令让通用配置文件引用Job独立配置文件的内容,实现变量复用,但执行Shell脚本时出现错误。
相关文件内容
- Job_config_file(Job独立配置)
export NAME_JOB='PP_AAAR' export log_dir="/data/workdir/AAAR/aaar/logs/" export cluster_logs_dir="/hadoop/cluster_logs/AAAR/"
- test_general_config_file(通用配置文件)
source "/data/workdir/user/m292121/properties/test_job_config_file" export TIMESTAMP=`date '+%Y%m%d_%H%M%S'` export DT_INICIO=`date "%Y-%m-%d %H:%M:%S"` export HOST_NAME=`hostname -s` export DIR=$(pwd) export ULTIMO_ERRO='EXECUÇÃO SEM ERROS' export DATA_PROCESSAMENTO=`date '+%Y%m%d'` export GF_NAME_JOB = $NAME_JOB
- sh_script(执行脚本)
#!/bin/bash source "/data/workdir/user/m292121/properties/test_general_config_file" echo $GF_NAME_JOB
执行错误信息
sh test_shell.sh /data/workdir/user/m292121/properties/test_general_config_file: line 10: export: `=': not a valid identifier
错误原因
Shell中变量赋值时=两边不能有空格,你在通用配置文件里写的export GF_NAME_JOB = $NAME_JOB,=前后的空格会让Shell把GF_NAME_JOB、=、$NAME_JOB当成三个独立的参数,导致export命令无法识别=这个参数,从而报错。
修复方案
把通用配置文件里的变量赋值行改成无空格的形式:
export GF_NAME_JOB=$NAME_JOB
验证结果
修改后重新执行脚本,就能正确输出PP_AAAR,实现从Job独立配置文件读取变量并赋值给通用配置文件变量的需求。
内容的提问来源于stack exchange,提问作者gfernandes
相关产品推荐
相关产品推荐

