2011-02-02 2 views
0

저는 쉘 스크립팅에서 새롭고 아마 을 완성하기가 가장 쉬운 임무는 아닙니다."경우에 선택하십시오."와 관련된 문제

XML-conf 파일 (server.xml)을 편집하고, 필요한 디렉토리를 만들고, 파일을 복사하고 이름을 바꾸는 Bash 스크립트를 작성하고 싶습니다. 여기까지 모든 것이 잘 작동하는 것처럼 보였습니다.

이제이 스크립트를 확장하여 다른 파일 (httpd.conf)도 편집하지만 어떤 것이 올바르게 작동하지 않습니다.

스크립트를 실행할 때마다 스크립트의 마지막 부분을 httpd.conf에 삽입하고 이유를 이해하지 못합니다.

나는 당신을 도와 주셔서 기쁘게 생각합니다.

고맙습니다. 코드의 가난한 형식을 기반으로 말할

감사
토마스

#!/bin/bash 

sed '/<\/Engine>/d' ~/server.xml > ~/server.xml.bak 
sed '/<\/Service>/d' ~/server.xml.bak > ~/server.xml 
sed '/<\/Server>/d' ~/server.xml > ~/server.xml.bak 
mv -f ~/server.xml.bak ~/server.xml 

read -p "Enter the new vHost name: " hstn 
mv ~/*.war ~/$hstn.war 
mv ~/*.war ~/test 
chown -R tomcat ~/test 
chgrp -R tomcat ~/test 
mkdir ~/var/www/$hstn 
cat >> ~/server.xml <<EOF 

    <Host name="$hstn" appBase="webapps/$hstn" 
     unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false"> 
EOF 
echo "Would you like to add an Alias for this vHost? (Select 1 or 2 and confirm with ENTER) " 
select yn in "Yes" "No"; do 
    case $yn in 
    Yes) read -p "Enter the desired Alias: " aliasname; cat >> ~/server.xml <<EOF 
    <Alias>$aliasname</Alias> 

<!-- SingleSignOn valve, share authentication between web applications 
     Documentation at: /docs/config/valve.html --> 
    <!-- 
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 
    --> 

    <!-- Access log processes all example. 
     Documentation at: /docs/config/valve.html 
     Note: The pattern used is equivalent to using pattern="common" --> 
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
      prefix="localhost_access_log." suffix=".txt" 
      pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/> 
    </Host> 
</Engine> 
</Service> 
</Server>EOF 
echo "The new vHost has been created with an Alias!" 
cat >> ~/httpd.conf <<EOF 

<VirtualHost $hstn> 
    ServerName $hstn 
    DocumentRoot /var/www/$hstn 
    <IfModule mod_jk.c> 
     JkMount/default 
     JkMount /* default 
    </IfModule> 
</VirtualHost> 
EOF; break;; 
     No) cat >> ~/server.xml <<EOF 

    <!-- SingleSignOn valve, share authentication between web applications 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 
     --> 

     <!-- Access log processes all example. 
      Documentation at: /docs/config/valve.html 
      Note: The pattern used is equivalent to using pattern="common" --> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" 
       pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/> 
     </Host> 
    </Engine> 
    </Service> 
</Server> 
EOF 
echo "The new vHost has been created without Alias!"; exit;; 
     esac 
    done 
exit 0 
+0

Skynet은 코드 자체 복제 기능을 제공합니다. – Trinidad

답변

2

하드. EOF 마커는 행에 자 여야합니다. 나는 EOF; break;;을 본다. 그것은 유효하지 않다.

+0

+1 - 또한 (분명히) ' EOF'. –