$ beep; echo $?
Command 'beep' not found, but can be installed with:
apt install beep
Please ask your administrator.
127
$ cat test.sh
#!/usr/bin/env bash
echo $?
The expected output of my script should be "127".
Why, then, after executing the bash script in the same manner, the return code printed is not what we expect?
$ beep; ./test.sh
Command 'beep' not found, but can be installed with:
apt install beep
Please ask your administrator.
0
$?
is not inherited by child processes.
You can export it to an environment variable, and check that in the script.
test.sh
:
#!/usr/bin/env bash
echo $CODE
then
beep
CODE=$? ./test.sh
Or you could pass $?
as a script parameter:
test.sh
#!/usr/bin/env bash
echo "$1"
then
beep; ./test.sh $?