Linux 学习之sed使用变量的替换

情况一:字符串换字符串,这里的变量内容不能包含类似斜杠/这种转义字符

替换etc-openldap-slapd.conf里面的环境变量${AGENT_HOME},其中/home\/dapmanager-agent可以用变量替换

sed -i "s/\${AGENT_HOME}/\/home\/dapmanager-agent/g" etc-openldap-slapd.conf

替换之前: ${AGENT_HOME}/service/openldap/redhat/ldapserver1/certs

替换之后:/home/dapmanager-agent/service/openldap/redhat/ldapserver1/certs

情况二: 变量换字符串,变量包含转义字符/,需要进行手动拼接

直接使用sed -i "s/\${AGENT_HOME}/$(AGENT_HOME)/g" etc-openldap-slapd.conf

出错:因为AGENT_HOME是路径结构,含有/,解决办法如下:

set -x
string=${AGENT_HOME}
array=(${string//\// })

result=''
for var in ${array[@]}
do
   result=$result'\/'$var
done

sed -i "s/\${AGENT_HOME}/$result/g"  ${agentHome}/openldap/redhat/${roleName}/etc-openldap-slapd.conf

set +x
 

 

你可能感兴趣的:(linux学习)