set -e
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
これを実行すると、一度到着するとueoa
(存在しない任意のコマンド)「終了」しますが、実行が継続されますwhile true; do echo "test"; sleep 1; done
。
この場合、フォアグラウンドプロセスも終了したことをどのように確認できますか?
答え1
そう:
#!/usr/bin/env bash
trap 'kill $(jobs -p)' ERR
set -e
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
答え2
#!/bin/bash
set -e
function cleanup()
{
kill $!
}
trap cleanup ERR
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa