У меня есть скрипт, который выполняет перезапуск приложения.его вариант 2 (и только 2) в случае, если оператор case не завершается в ;;опции при запуске с удаленного узла в следующем формате
ssh и @ ip /path/script.sh 2 01 05 2019
опция 1 и 3 работает.Вариант 1 не имеет оператора выхода, все еще выходящего из сценария после выполнения.для варианта 2 я вижу выполнение до последнего оператора echo.
скрипт выглядит следующим образом
source /geneva/app/phts1/.profile
e_name=`echo $HOME|cut -d "/" -f4`
ch=$1
dt=$2
mt=$3
yr=$4
case "$ch" in
1)
#..... some script .. working and exiting properly#
;;
2)
e_sid=`echo $ORACLE_SID`
e_name=`echo $HOME|cut -d "/" -f4`
x=12000000
z=' '
export GENEVA_FIXEDDATE=$yr$mt$dt$z$x
process_id=`ps -fu $e_name|egrep 'TM|DConfigAgent'|tr -s " " " "|cut -d " " -f2`
kill -9 $process_id &
cd $HOME/bin
dconfigadmin -L platform.cfg ## custom application
DConfigAgent & ## custom application
sleep 1
TM -u admin -p password -s $e_sid & ## custom application
sleep 2
# clear
ls -lrt $HOME/log >>aaa.txt
dt1=`cat aaa.txt|tail -1|tr -s " " " "|tr -s " " "\n" |tail -1`
rm aaa.txt
ls -lrt $HOME/log/$dt1>>aaa.txt
dt2=`cat aaa.txt|tr -s " " " "|cut -d " " -f9|grep ^TM|tail -1`
rm aaa.txt
tail -100 $HOME/log/$dt1/$dt2
echo "execution ends here ...... I can see till this echo statement being printed"
;;
*)
echo "wrong option"
exit
;;
esac