私は次の3行を持っています:
export bunion_uds_file="$bunion_socks/$(uuidgen).sock";
"$cmd" "$@" | bunion
rm -f "$bunion_uds_file"
最後の行が常に実行されていることを確認する必要があります。次のようにできます。
export bunion_uds_file="$bunion_socks/$(uuidgen).sock";
(
set +e
"$cmd" "$@" | bunion
rm -f "$bunion_uds_file"
)
または、次のようになります。
export bunion_uds_file="$bunion_socks/$(uuidgen).sock";
"$cmd" "$@" | bunion && rm -f "$bunion_uds_file" || rm -f "$bunion_uds_file"
私はサブシェルを作成し、set + eを使用するとパフォーマンスがわずかに低下すると仮定します。
答え1
トラップを設定できます。
#!/bin/bash
export bunion_uds_file="$bunion_socks/$(uuidgen).sock"
trap 'rm -f "$bunion_uds_file"' EXIT
"$cmd" "$@" | bunion
これにより、シグナルによって終了rm -f
しない限り、シェルセッションが終了したときにコマンドが実行されます。KILL
Mosvyがコメントで指摘したように、、使用する前にクリーンアップする必要があるソケットの場合は、再作成して使用する前に削除する方が簡単です。
#!/bin/bash
export bunion_uds_file="$bunion_socks/$(uuidgen).sock"
rm -f "$bunion_uds_file" || exit 1
"$cmd" "$@" | bunion