user53029
user53029

Reputation: 695

2nd echo statement in bash script not working

For some reason I'm not getting the output of my 2nd echo line when I run my script. Here is my code snippet:

IS_RUNNING=$(netstat -anp | grep ":7600" | grep java | awk '{print   $7}' | cut -d"/" -f 2)

  start(){
  nohup /bin/su -c "/opt/app/bin/service start" - user  &>/dev/null &
  echo "Starting Services please wait"      
  sleep 30
  if [ "$IS_RUNNING" = java ];
  then
     echo "Service is now running"
     exit 0
  fi
}

Interestingly. when I run it with:

sh -x ./service start

I get the output expected and my 2nd echo gets written to the screen.

+ case "$1" in
+ start
+ echo 'Starting Services please wait'
Starting Services please wait
+ sleep 30
+ nohup /bin/su -c '/opt/app/bin/service start' - user
+ '[' java = java ']'
+ echo 'Service is now running'
Service is now running
+ exit 0

Without using sh -x, I simply get this:

[[email protected]]# ./service start
Starting Services please wait
[[email protected]]# 

I have a feeling I'm overlooking something simple. Can anyone help?

Upvotes: 1

Views: 362

Answers (1)

Walter A
Walter A

Reputation: 20032

The running line is evaluated once:

IS_RUNNING=$(netstat -anp | grep ":7600" | grep java | awk '{print   $7}' | cut -d"/" -f 2)

You should make a function for this or include this line in the start() function after the sleep.

Upvotes: 2

Related Questions