Bash
嘗試/最終使用 bash shell
我有這三行:
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 性能稍差等。
你可以設置一個陷阱:
#!/bin/bash export bunion_uds_file="$bunion_socks/$(uuidgen).sock" trap 'rm -f "$bunion_uds_file"' EXIT "$cmd" "$@" | bunion
這將使
rm -f
命令在 shell 會話終止時執行,除非由KILL
信號終止。正如 mosvy 在評論中指出的那樣,如果這是一個需要在使用前清理的套接字,那麼在重新創建和使用它之前將其刪除會更容易:
#!/bin/bash export bunion_uds_file="$bunion_socks/$(uuidgen).sock" rm -f "$bunion_uds_file" || exit 1 "$cmd" "$@" | bunion