LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   Find the exit code of a program from within a shell script?? (http://www.linuxquestions.org/questions/programming-9/find-the-exit-code-of-a-program-from-within-a-shell-script-905682/)

yanom 09-29-2011 04:52 PM

Find the exit code of a program from within a shell script??
 
So I'm writing this shell script and i want to run this command within the shell script:
Code:

/usr/bin/zenity --question --title "Blocked: $*" --text "The file '$exe' is not marked as executable.  If this was downloaded or copied from an untrusted source, it may be dangerous to run.  For more details, read about the <a href=\"https://wiki.ubuntu.com/Security/ExecutableBit\">executable bit</a>. HOWEVER, you can choose to override the security protections and open this potentially unsafe file. Execute manual override?"
Then, I want it to do something if that command returns 0, and something else if it returns 1.

What I'm trying to do here is rewrite Ubuntu's infamous cautious-launcher so that it supports manual override. This is because some filesystems (i.e. NTFS) don't support marking things executable. Full code of what I have right now:
Code:

#!/bin/bash
# For use with .desktop files and MIME handlers so that the Ubuntu Policy
# can be followed: programs cannot be executed when they lack the execute bit.
# https://wiki.ubuntu.com/SecurityTeam/Policies#Execute-Permission%20Bit%20Required
exe="$1"
shift || true
if [ -n "$exe" ] && [ ! -x "$exe" ] && \
  [ "${exe:0:5}" != "/usr/" ] && [ "${exe:0:5}" != "/opt/" ]
then
    if [ -n "$DISPLAY" ] && [ -x /usr/bin/zenity ]; then
        if 
                /usr/bin/zenity --question --title "Blocked: $*" --text "The file '$exe' is not marked as executable.  If this was downloaded or copied from an untrusted source, it may be dangerous to run.  For more details, read about the <a href=\"https://wiki.ubuntu.com/Security/ExecutableBit\">executable bit</a>. HOWEVER, you can choose to override the security protections and open this potentially unsafe file. Execute manual override?"
        then
                echo "aborting"
        else
                exec "$@" "$exe"
        fi
    else
        echo "$*: '$exe' is not executable.  Aborting." >&2
    fi
    exit 1
fi
exec "$@" "$exe"


SL00b 09-29-2011 05:08 PM

The exit code of the most recently run program in a bash environment is stored in a special environment variable:

Code:

$?

wpeckham 09-30-2011 11:47 AM

Too complicated
 
try something like this
Code:

if <your command goes here>
  then
      do one thing
  else
      do something else
fi

If your command is very complex, you may need to group it ( stuff ) style.


All times are GMT -5. The time now is 07:28 PM.