2016-11-24 13 views
0

以下は、実行可能ファイルです。スクリプトを介して私は最適化された方法でそれをエンドポイントにする必要があります。execファイル内の文字列を複数行に置き換える方法

ファイル名:taoexec

#!/bin/bash 

. /etc/init.d/functions 

PIDFILE=/var/run/Naming_Service.pid 
PORT= 

OPTIONS="-p ${PIDFILE}" 

RETVAL=0 
prog="Naming_Service" 

start() { 
     echo -n $"Starting $prog: " 
     if [ $UID -ne 0 ]; then 
       RETVAL=1 
       failure 
     else 
       setsid /usr/local/bin/Naming_Service ${OPTIONS} & 
       RETVAL=$? 
     fi 
     echo 
     return $RETVAL 
} 

stop() { 
     echo -n $"Stopping $prog: " 
     if [ $UID -ne 0 ]; then 
       RETVAL=1 
       failure 
     else 
       killproc /usr/local/bin/Naming_Service 
       RETVAL=$? 
     fi 
     echo 
     return $RETVAL 
} 

restart(){ 
     stop 
     start 
} 

case "$1" in 
    start) start ;; 
    stop) stop ;; 
    restart) restart ;; 
    status) status -p ${PIDFILE} ${prog}; RETVAL=$? ;; 
    *) echo "Usage: $0 {start|stop|status|restart}"; RETVAL=1 
esac 

環境変数からは、私は、ポート番号を読んでいると私は、そのファイルにポートとホスト名を交換してみてください。私は以下のスクリプトを使用しているが、達成されていない。私はNS_PORTS = 13021,13022,13023

#!/bin/bash 

    . /etc/init.d/functions 
    PIDFILE_13021=/var/run/Naming_Service_13021.pid 
    PIDFILE_13022=/var/run/Naming_Service_13022.pid 
    PIDFILE_13023=/var/run/Naming_Service_13023.pid 
    PORT= 
    OPTIONS_13021="-p ${PIDFILE_13021} -ORBEndpoint iiop://10.12.23.34:13021" 
    OPTIONS_13022="-p ${PIDFILE_13022} -ORBEndpoint iiop://10.12.23.34:13022" 
    OPTIONS_13023="-p ${PIDFILE_13023} -ORBEndpoint iiop://10.12.23.34:13023" 

start() { 
     echo -n $"Starting $prog: " 
     if [ $UID -ne 0 ]; then 
       RETVAL=1 
       failure 
     else 
       setsid /usr/local/bin/Naming_Service ${OPTIONS_13021} & 
       setsid /usr/local/bin/Naming_Service ${OPTIONS_13022} & 
       setsid /usr/local/bin/Naming_Service ${OPTIONS_13023} & 
       RETVAL=$? 
     fi 
     echo 
     return $RETVAL 
} 


stop() { 
     echo -n $"Stopping $prog: " 
     if [ $UID -ne 0 ]; then 
       RETVAL=1 
       failure 
     else 
       killproc /usr/local/bin/Naming_Service 
       RETVAL=$? 
     fi 
     echo 
     return $RETVAL 
} 

restart(){ 
     stop 
     start 
} 

case "$1" in 
    start) start ;; 
    stop) stop ;; 
    restart) restart ;; 
    status) status -p ${PIDFILE} ${prog}; RETVAL=$? ;; 
    *) echo "Usage: $0 {start|stop|status|restart}"; RETVAL=1 
esac 

誰もがこのためのソリューションを与えることができます提供されている場合、私は私が最後に次の出力を期待していこの

NS_HOSTNAME=$(grep "`hostname`" /etc/hosts|awk '{print $1}') 

namingService_ports=$NS_PORTS 
echo $namingService_ports 

IFS=',' 
read -r -a portArray <<< "$namingService_ports" 

for num in "${portArray[@]}"; 
do 
    sed 's~^\(OPTIONS\)="\(-p \${PIDFILE\)}~\1'"_$num"'="\2'"_$num"'} -ORBEndpoint iiop://'"$NS_HOSTNAME"':'"$num"'~' <<< 'OPTIONS="-p ${PIDFILE}"' >> "/etc/init.d/tao" 
done 

を達成することができます方法を知ってみましょう。

答えて

0

スクリプトを実行するたびにファイルを最初から生成できない理由はありますか?

#!/bin/bash 

FILENAME=/etc/init.d/tao 

NS_HOSTNAME=$(grep "`hostname`" /etc/hosts|awk '{print $1}') 

namingService_ports=$NS_PORTS 
echo $namingService_ports 

cat > "$FILENAME" << EOF 
#!/bin/bash 

. /etc/init.d/functions 
PORT= 
EOF 

IFS=',' 
read -r -a portArray <<< "$namingService_ports" 

for num in "${portArray[@]}" ; do 
    echo PIDFILE_$num=/var/run/Naming_Service_$num.pid 
    echo OPTIONS_$num=\"-p \${PIDFILE_$num} -ORBEndpoint iiop://${NS_HOSTNAME}:$num\" 
done >> "$FILENAME" 
+0

スクラッチファイルを置き換えるのに問題はありませんが、完全なファイルは次のようになります – PravinKmr

関連する問題