나는 다음 세 줄을 가지고 있습니다 :
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