LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   Bash: execute command (https://www.linuxquestions.org/questions/programming-9/bash-execute-command-574563/)

Ephracis 08-03-2007 03:16 PM

Bash: execute command
 
I am writing a script that will run a gcc command. I want the script to stop executing if the gcc command fails and output something like "script failed" and then just stop.

Is there a way in bash to execute a command and catch errors from it in an if-then-else or something?

Thanks!

jailbait 08-03-2007 03:27 PM

"Is there a way in bash to execute a command and catch errors from it in an if-then-else or something?"

Yes. Check the gcc return code within an if statement. Normal completion gives a return code of zero. An error gives a non-zero return code. You can even get fancy and take different actions based on which error code is returned.

-----------------
Steve Stites

krizzz 08-03-2007 03:28 PM

Basically you need to check the value of exit code of gcc, using $? variable. Non-zero result means error.

Ephracis 08-03-2007 04:26 PM

Thanks! The $? was exactly what I was looking for. I googled a lot for "command execution return" and stuff but couldn't find a place that said "the return code of the command is in $?" :P

Thanks! That helped a lot. :D

jlliagre 08-03-2007 04:45 PM

Or this simpler solution:
Code:

...
gcc ... || { echo gcc failed ; exit ; }
...


theNbomr 08-03-2007 06:20 PM

or
Code:

make
--- rod.

Ephracis 09-01-2007 07:54 AM

make would require me to create a makefile. This script is supposed to compile, create an xml file, pack into a tar and move for installation. So.. ;)

paulsm4 09-02-2007 10:04 PM

So, like - what's wrong with having the *makefile* create the XML, pack it into a tar file, and move it for installation?

I would argue that a makefile (or, in some environments, Maven or Ant) would be the *better* (simpler, more robust, more flexible) solution!

IMHO .. PSM

Ephracis 10-07-2007 08:23 AM

Now you have really triggered my interest. Can Makefile do all that? I am currently using CMake as the build system for my project. Is there a way to create such wonderful Makefiles via CMake?

Please enlighten me. ;)

Tischbein 10-07-2007 10:58 AM

Ah, that signature just got me going! Here's a third way of doing it:

Code:

#!/bin/bash

cry_murder()
{
  if (($? != 0))
  then
      printf "%s\n" \
            "Would you like to take a seat and have a cup of nice" \
            "relaxing green tea.  I have some bad news for you..." \
            >&2
  fi
}

trap cry_murder 0  # Execute cry_murder on exit
set -e              # If any command returns an error value, exit

echo beg to differ | grep stuff  # No stuff, so grep returns 1.

echo That went just swell.      # Never executed



All times are GMT -5. The time now is 12:21 PM.