bashシェルを試してみてください/最後に

bashシェルを試してみてください/最後に

私は次の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

関連情報