![bash 쉘을 사용해 보십시오/마지막으로](https://linux55.com/image/158807/bash%20%EC%89%98%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%B4%20%EB%B3%B4%EC%8B%AD%EC%8B%9C%EC%98%A4%2F%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C.png)
나는 다음 세 줄을 가지고 있습니다 :
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