| 1 | #!/bin/bash |
| 2 | # |
| 3 | # Job control constructs: |
| 4 | # & terminator (instead of ;) |
| 5 | # $! -- last PID |
| 6 | # wait builtin (wait -n waits for next) |
| 7 | # |
| 8 | # Only interactive: |
| 9 | # fg |
| 10 | # bg |
| 11 | # %1 -- current job |
| 12 | |
| 13 | ### Brace group in background |
| 14 | { sleep 0.01; exit 99; } & wait; echo $? |
| 15 | # stdout: 0 |
| 16 | # status: 0 |
| 17 | |
| 18 | ### Wait on background process PID |
| 19 | { sleep 0.01; exit 99; } & wait $!; echo $? |
| 20 | # stdout: 99 |
| 21 | # status: 0 |
| 22 | |
| 23 | ### Builtin in background |
| 24 | echo async & wait |
| 25 | # stdout: async |
| 26 | # status: 0 |
| 27 | |
| 28 | ### Async for loop |
| 29 | for i in 1 2 3; do |
| 30 | echo $i |
| 31 | sleep 0.0$i |
| 32 | done & wait |
| 33 | # stdout-json: "1\n2\n3\n" |
| 34 | # status: 0 |