in reply to Creating process restart script

In addition to what Fletch said, there are a few syntax errors I can point out:

All statements in Perl must end with a semicolon.

You need to use a string comparison operator (eq) instead of the assignment operator (=) in your if statement.

Using the strictures (use warnings; use strict;) will help avoid other common mistakes.

I think this is more like what you wanted:

#!/usr/bin/perl use warnings; use strict; my $com1 = `ps -eaf | grep bpps | grep -v grep | awk '{print $1}'`; my $com2; if ($com1 eq 'weblogic') { print "bpps is running.\n"; } else { $com2 = `sh -c /export/home/weblogic/bai/bpps.sh start 2 > /de +v/null 2>&1`; }

This code is untested.

Replies are listed 'Best First'.
Re^2: Creating process restart script
by redcell184 (Initiate) on Oct 31, 2007 at 17:07 UTC
    Ok i get it now, but the eq `weblogic` portion of the script is that a method to grep for the output? and thank you for breaking it down
      Since you have not provided any sample output of your ps command (piped through grep and awk), I can only guess that you expect it to return a single string on a single line. Based on the "if" statement in your original code, I assumed that if the output of ps was not equal to the magic literal string 'weblogic', then you wanted to execute your $com2 command.

      Does this answer your question?

        Here is the out put of the command shell command
        ps -eaf | grep bpps | grep -v grep | awk '{print $1,$10}' weblogic start weblogic /export/home/weblogic/bai/bpps.sh
        I have also tried compiling it and i get the following error message:
        Use of uninitialized value in concatenation (.) or string at bp1 line +3.