1
私は連想配列の文字列を見つけて置き換えるこのコード部分を持っていますが、文字列を置き換えるときにスクリプトは動作していますが、は、sedを使用してパスを置き換えることはできません
#!/bin/bash
tomcatDirName="tomcat801"
tomcatSvcName="tomcatSvc"
tomcatSvcUser="tomcatUsr"
tomcatSvcGrp="tomcatGrp"
installationPath="/opt/app"
tomcatDirPath="$installationPath/$tomcatDirName"
initDTomcatFilePath="/root/scripts/tomcat801"
javaDirName="java"
javaDirPath="$installationPath/$javaDirName"
jdkDirPath="$javaDirPath/jdk1.8.0_45"
declare -A TomcatInitD=(
\t ["^CATALINA_HOME.*"]="CATALINA_HOME=$tomcatDirPath"
\t ["^TOMCAT_USER.*"]="TOMCAT_USER=$tomcatSvcUser"
\t ["^TOMCAT_SVC.*"]="TOMCAT_SVC=$tomcatSvcName"
\t ["^JAVA_PATH.*"]="JAVA_PATH=$jdkDirPath"
)
for i in "${!TomcatInitD[@]}"
do
\t value="${TomcatInitD[$i]}"
\t key="$i"
\t sed -i -e "s/$key/$value/" $initDTomcatFilePath
done
私はそれらを交換しようとしています2つのパス上の誤差の2行を取得しています。
sed: -e expression #1, char 35: unknown option to `s'
sed: -e expression #1, char 27: unknown option to `s'
はいずれもいただきました間違っていたり、それを行うにはどのように、多くのおかげで私に言うことができます。
感謝:
あなたの
sed
は、代替区切り文字を使用するように変更することができます。出来た .. – Vagho