Bash坏变量替换

Bash坏变量替换,bash,shell,Bash,Shell,我有一个大约一个月前修改过的安装脚本,除了“偶然”失败之外,它几乎每次都能正常工作。在调查该问题后,我尝试手动运行该脚本(bash-x),并在下面的行中发现一个错误的变量替换错误 local HTTPD=${$APACHE_ADDRESS} 我把这个改成了 local HTTPD=${APACHE_ADDRESS} ..每次安装成功时,脚本都会手动运行。${APACHE_ADDRESS}变量来自属性文件。我的问题是,这种替代品如何能在95%的时间内发挥作用 OS= RHEL 6.6 添加上

我有一个大约一个月前修改过的安装脚本,除了“偶然”失败之外,它几乎每次都能正常工作。在调查该问题后,我尝试手动运行该脚本(bash-x),并在下面的行中发现一个错误的变量替换错误

local HTTPD=${$APACHE_ADDRESS}
我把这个改成了

local HTTPD=${APACHE_ADDRESS}
..每次安装成功时,脚本都会手动运行。${APACHE_ADDRESS}变量来自属性文件。我的问题是,这种替代品如何能在95%的时间内发挥作用

OS= RHEL 6.6
添加上下文…它作为流动场景的一部分执行

batch_config ()
{
does_file_exist ${BATCH_CONFIG}
        # need to get the Datastore 'type'
        local DATASTORE_NAME="OpenDJ"
        local AUTHSERVICE_NAME="ldapService"
        local HTTPDFQDN=${APACHE_SERVER}
        local idmgrName="identity-mgr-service"

        ${CAT} << EOF > ${SSO_BATCH_CONFIG}
create-realm -e ${REALM_NAME}
create-policies -e / -X ${REFERRAL_TEMP_FILE}
create-policies -e /${REALM_NAME} -X ${POLICY_TEMP_FILE}
create-agent -e /${REALM_NAME} -b ${AGENT_NAME} -t WebAgent -s ${BACKEND_SERVER_URL}/${DEPLOYMENT_NAME} -g ${AGENT_SERVER_URL} -a "userpassword=` ${CAT} ${AGENT_ACCESS_FILE} `"
update-agent -e /${REALM_NAME} -b ${AGENT_NAME} -D ${AGENT_ATTRIBUTES_FILE}
create-agent -e / -b idmgr -t J2EEAgent -a userpassword=xxxxxxx -g http://${HTTPDFQDN}:8085/agentapp -s http://myalias.${HTTPDFQDN}:4448/mywar
----
----
batch\u config()
{
_文件_是否存在${BATCH_CONFIG}
#需要获取数据存储“类型”
本地数据存储\u NAME=“OpenDJ”
本地AUTHSERVICE\u NAME=“ldapService”
本地HTTPDFQDN=${APACHE_SERVER}
本地idmgrName=“身份管理器服务”
${CAT}${SSO\U批处理\U配置}
创建领域-e${realm\u NAME}
创建策略-e/-X${reference\u TEMP\u FILE}
创建策略-e/${REALM\u NAME}-X${POLICY\u TEMP\u FILE}
创建代理-e/${REALM\u NAME}-b${agent\u NAME}-t WebAgent-s${BACKEND\u SERVER\u URL}/${DEPLOYMENT\u NAME}-g${agent\u SERVER\u URL}-a“用户密码=`${CAT}${agent\u ACCESS\u FILE}”
更新agent-e/${REALM\u NAME}-b${agent\u NAME}-D${agent\u ATTRIBUTES\u FILE}
创建代理-e/-b idmgr-t J2EEAgent-a userpassword=xxxxxxx-g http://${HTTPDFQDN}:8085/agentapp-shttp://myalias.${HTTPDFQDN}:4448/mywar
----
----

您的VCS历史记录怎么说?可能它在一个条件块内,条件在95%的时间内都是假的?这是一件令人困惑的事情,如果不解决这个问题,脚本将保证失败,因为HTTPD地址用于配置后端服务器。我在上面添加了上下文…如果未配置此后端服务器,则我nstall失败了,没有人可以登录…我唯一可以肯定的是,如果不检查所有解决方案,我会说:“没有奇迹发生”。:)我怀疑它工作的90%时间里,您实际上是以
local HTTPD
的形式读取脚本名称。这意味着,APACHE\u地址已初始化,但未设置(默认为0)因此,$APACHE_ADDRESS=>0导致HTTPD=${$APACHE_ADDRESS}获取第一个位置参数的值..奇怪的事情发生了。。。