Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- if [[ -n "$1" ]]; then
- sleep 1 &
- p=$!
- kill $p &> /dev/null
- else
- sleep 1 &
- p=$!
- kill $p &> /dev/null
- /bin/true # This line is the sole difference.
- fi
- $ ./a.sh
- /a.sh: line 16: 18103 Terminated sleep 1
- $ ./a.sh foo
- $ # no "Terminated" message
- #!/bin/bash
- if [[ -n "$1" ]]; then
- sleep 1 &
- p=$!
- kill $p &> /dev/null
- /bin/echo "a line"
- else
- sleep 1 &
- p=$!
- kill $p &> /dev/null
- fi
- $ bash ./mystery.sh
- $ bash ./mystery.sh foo
- a line
- ./mystery.sh: line 11: 10361 Terminated sleep 1
- $ bash ./mystery.sh
- $ bash ./mystery.sh foo
- a line
- if [[ -n "$1" ]]; then
- sleep 1 &
- p=$!
- kill $p &> /dev/null
- $ strace -s 1024 -e kill bash mystery.sh
- kill(9830, SIGTERM) = 0
- mystery.sh: line 11: 9830 Terminated sleep 1
- --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=9830, si_uid=1000, si_status=SIGTERM, si_utime=0, si_stime=0} ---
- +++ exited with 0 +++
- $ strace -s 1024 -e kill bash mystery.sh foo
- kill(9839, SIGTERM) = 0
- +++ exited with 0 +++
- $ strace -s 1024 -e kill,wait4 bash mystery.sh foo
- kill(9910, SIGTERM) = 0
- +++ exited with 0 +++
- $ strace -s 1024 -e kill,wait4 bash mystery.sh
- kill(9916, SIGTERM) = 0
- --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=9916, si_uid=1000, si_status=SIGTERM, si_utime=0, si_stime=0} ---
- wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGTERM}], WNOHANG, NULL) = 9916
- wait4(-1, 0x7ffe8e5bb110, WNOHANG, NULL) = -1 ECHILD (No child processes)
- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 9917
- mystery.sh: line 11: 9916 Terminated sleep 1
- --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=9917, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
- wait4(-1, 0x7ffe8e5bb250, WNOHANG, NULL) = -1 ECHILD (No child processes)
- +++ exited with 0 +++
- #!/bin/bash
- ## ... copy code from the question above.
- sleep 0.2
Add Comment
Please, Sign In to add comment