前提・実現したいこと
shell script
サブシェルの内容をwaitするスクリプトを作成したい
発生している問題・エラーメッセージ
waitコマンドが思っているように動作しない。
現状以下のソースコードを実行した際にサブシェルがを待たずに次の処理が起こってしまうため解決方法
のご教授をお願いいたします。
該当のソースコード
sh
1#/bin/sh 2PIDS=/hoge/pids 3MYDIR=`dirname $0` 4touch $PIDS 5chmod 666 $PIDS 6pids=`cat $PIDS` 7test_wait() 8{ 9su - oracle -c "($MYDIR/expdp.sh;$MYDIR/compress.sh)" & 10test_pid=$! 11echo $test_pid >>$PIDS 12} 13 14ORATAB=/var/opt/oracle/oratab 15use_oratab() 16{ 17 18 while read LINE 19 do 20 case $LINE in 21 \#*) 22 continue 23 ;; 24 *) 25 ORA=`echo $LINE | awk -F: '{print $1}' -` 26 if [ X"$ORA" = 'X' -o X"$ORA" = 'X*' ] ; then 27 continue 28 fi 29 if [ `echo $ORA | cut -b 1` = '+' ]; then 30 continue 31 fi 32 if [ `echo $ORA | cut -b 1` = '-' ]; then 33 continue 34 fi 35 test_wait 36 test_pid2=$! 37 echo "$test_pid2" 38 ;; 39 esac 40 done < $ORATAB 41 42} 43 44#main 45use_oratab 46echo "oratab start" 47echo $pids 48echo "wait start" 49while read LINE2 50do 51wait $LINE2 52echo "$LINE2 wait finish" 53done < $PIDS 54echo "wait finish" 55echo "test_success" 56rm $PIDS 57exit 0 58
# expdp.sh オラクルexpdpの処理です
#compress.sh expdpで作成したファイルの圧縮 tar cvf /hoge/expdp | gzip -c > /hogehoge/expdp_hoge.tar.gz
試したこと
上記のようなスクリプトで試してみましたがwaitが思ったように動作せず...
補足情報(FW/ツールのバージョンなど)
wait させたいのは expdp.sh, compress.sh の処理になります。
動作環境はSolaris 10
使用しているshell の変更はできませんので、
宜しくお願いいたします。
あなたの回答
tips
プレビュー