I have a situation where in I have a command in my shell script that must be executed after a exit command is executed in the same script (I know!! It sounds crazy!!)
I want to find a solution for something like
#!/bin/sh
ls -l ~/.
exit $?
touch ~/abc.txt
Here I want the command touch ~/abc.txt
execute after exit $?
has run and the command touch ~/abc.txt
can be any command.
Constraints: 1) I cannot modify the exit $?
part of the above script. 2) The command must be executed only after the exit $?
command.
I'm not sure if there is a solution for this but any help is appreciated.
The typical approach is to set a trap:
This will invoke the touch command when the shell exits. In some shells (eg
bash
), the trap will also be executed if the script terminates as the result of a signal, but in others (egdash
) it will not. There is no portable way to invoke the command only if the last command wasexit
.