How to make `trap` know if the EXIT is after successful program finish or because of premature as an error or...
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
PROBLEM:
I have a shell program that I have been writing but I can't find out how to make sure that trap
is trapping for cleanup at the end or because of a error in some command, it cleans up either way.
Here is the code:
################################### Successful exit then this cleanup ###########################################################3
successfulExit()
{
IFS=$IFS_OLD
cd "$HOME" || { echo "cd $HOME failed"; exit 155; }
rm -rf /tmp/svaka || { echo "Failed to remove the install directory!!!!!!!!"; exit 155; }
}
###############################################################################################################################33
####### Catch the program on successful exit and cleanup
trap successfulExit EXIT
QUESTION:
How can I make trap
only trap EXIT
on program finish?
Here is the full script:
debianConfigAwsome.5.3.sh
shell-script exit-status trap
add a comment |
PROBLEM:
I have a shell program that I have been writing but I can't find out how to make sure that trap
is trapping for cleanup at the end or because of a error in some command, it cleans up either way.
Here is the code:
################################### Successful exit then this cleanup ###########################################################3
successfulExit()
{
IFS=$IFS_OLD
cd "$HOME" || { echo "cd $HOME failed"; exit 155; }
rm -rf /tmp/svaka || { echo "Failed to remove the install directory!!!!!!!!"; exit 155; }
}
###############################################################################################################################33
####### Catch the program on successful exit and cleanup
trap successfulExit EXIT
QUESTION:
How can I make trap
only trap EXIT
on program finish?
Here is the full script:
debianConfigAwsome.5.3.sh
shell-script exit-status trap
add a comment |
PROBLEM:
I have a shell program that I have been writing but I can't find out how to make sure that trap
is trapping for cleanup at the end or because of a error in some command, it cleans up either way.
Here is the code:
################################### Successful exit then this cleanup ###########################################################3
successfulExit()
{
IFS=$IFS_OLD
cd "$HOME" || { echo "cd $HOME failed"; exit 155; }
rm -rf /tmp/svaka || { echo "Failed to remove the install directory!!!!!!!!"; exit 155; }
}
###############################################################################################################################33
####### Catch the program on successful exit and cleanup
trap successfulExit EXIT
QUESTION:
How can I make trap
only trap EXIT
on program finish?
Here is the full script:
debianConfigAwsome.5.3.sh
shell-script exit-status trap
PROBLEM:
I have a shell program that I have been writing but I can't find out how to make sure that trap
is trapping for cleanup at the end or because of a error in some command, it cleans up either way.
Here is the code:
################################### Successful exit then this cleanup ###########################################################3
successfulExit()
{
IFS=$IFS_OLD
cd "$HOME" || { echo "cd $HOME failed"; exit 155; }
rm -rf /tmp/svaka || { echo "Failed to remove the install directory!!!!!!!!"; exit 155; }
}
###############################################################################################################################33
####### Catch the program on successful exit and cleanup
trap successfulExit EXIT
QUESTION:
How can I make trap
only trap EXIT
on program finish?
Here is the full script:
debianConfigAwsome.5.3.sh
shell-script exit-status trap
shell-script exit-status trap
edited 2 hours ago
muru
37.6k589165
37.6k589165
asked 7 hours ago
somethingSomethingsomethingSomething
1,850103460
1,850103460
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
On entry to the EXIT
trap, $?
contains the exit status. That's the same value you'd find as $?
after calling this script in another shell: either the argument passed to exit
(truncated to the range 0–255) or the return status of the preceding command. In the case of an exit due to set -e
, it's the return status of the command that triggered the implicit exit
.
Usually you should save $?
and exit again with the same status.
cleanup () {
if [ -n "$1" ]; then
echo "Aborted by $1"
elif [ $status -ne 0 ]; then
echo "Failure (status $status)"
else
echo "Success"
fi
}
trap 'status=$?; cleanup; exit $status' EXIT
trap 'trap - HUP; cleanup SIGHUP; kill -HUP $$' HUP
trap 'trap - INT; cleanup SIGINT; kill -INT $$' INT
trap 'trap - TERM; cleanup SIGTERM; kill -TERM $$' TERM
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f512331%2fhow-to-make-trap-know-if-the-exit-is-after-successful-program-finish-or-becaus%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
On entry to the EXIT
trap, $?
contains the exit status. That's the same value you'd find as $?
after calling this script in another shell: either the argument passed to exit
(truncated to the range 0–255) or the return status of the preceding command. In the case of an exit due to set -e
, it's the return status of the command that triggered the implicit exit
.
Usually you should save $?
and exit again with the same status.
cleanup () {
if [ -n "$1" ]; then
echo "Aborted by $1"
elif [ $status -ne 0 ]; then
echo "Failure (status $status)"
else
echo "Success"
fi
}
trap 'status=$?; cleanup; exit $status' EXIT
trap 'trap - HUP; cleanup SIGHUP; kill -HUP $$' HUP
trap 'trap - INT; cleanup SIGINT; kill -INT $$' INT
trap 'trap - TERM; cleanup SIGTERM; kill -TERM $$' TERM
add a comment |
On entry to the EXIT
trap, $?
contains the exit status. That's the same value you'd find as $?
after calling this script in another shell: either the argument passed to exit
(truncated to the range 0–255) or the return status of the preceding command. In the case of an exit due to set -e
, it's the return status of the command that triggered the implicit exit
.
Usually you should save $?
and exit again with the same status.
cleanup () {
if [ -n "$1" ]; then
echo "Aborted by $1"
elif [ $status -ne 0 ]; then
echo "Failure (status $status)"
else
echo "Success"
fi
}
trap 'status=$?; cleanup; exit $status' EXIT
trap 'trap - HUP; cleanup SIGHUP; kill -HUP $$' HUP
trap 'trap - INT; cleanup SIGINT; kill -INT $$' INT
trap 'trap - TERM; cleanup SIGTERM; kill -TERM $$' TERM
add a comment |
On entry to the EXIT
trap, $?
contains the exit status. That's the same value you'd find as $?
after calling this script in another shell: either the argument passed to exit
(truncated to the range 0–255) or the return status of the preceding command. In the case of an exit due to set -e
, it's the return status of the command that triggered the implicit exit
.
Usually you should save $?
and exit again with the same status.
cleanup () {
if [ -n "$1" ]; then
echo "Aborted by $1"
elif [ $status -ne 0 ]; then
echo "Failure (status $status)"
else
echo "Success"
fi
}
trap 'status=$?; cleanup; exit $status' EXIT
trap 'trap - HUP; cleanup SIGHUP; kill -HUP $$' HUP
trap 'trap - INT; cleanup SIGINT; kill -INT $$' INT
trap 'trap - TERM; cleanup SIGTERM; kill -TERM $$' TERM
On entry to the EXIT
trap, $?
contains the exit status. That's the same value you'd find as $?
after calling this script in another shell: either the argument passed to exit
(truncated to the range 0–255) or the return status of the preceding command. In the case of an exit due to set -e
, it's the return status of the command that triggered the implicit exit
.
Usually you should save $?
and exit again with the same status.
cleanup () {
if [ -n "$1" ]; then
echo "Aborted by $1"
elif [ $status -ne 0 ]; then
echo "Failure (status $status)"
else
echo "Success"
fi
}
trap 'status=$?; cleanup; exit $status' EXIT
trap 'trap - HUP; cleanup SIGHUP; kill -HUP $$' HUP
trap 'trap - INT; cleanup SIGINT; kill -INT $$' INT
trap 'trap - TERM; cleanup SIGTERM; kill -TERM $$' TERM
answered 6 hours ago
GillesGilles
547k13011131631
547k13011131631
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f512331%2fhow-to-make-trap-know-if-the-exit-is-after-successful-program-finish-or-becaus%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown