チケット #24454

EXIT トラップの実行時のリダイレクトがおかしい

登録: 2011-02-17 18:41 最終更新: 2011-07-28 23:56

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

シェルが誤った最適化を行っているため、シェルが終了する直前に設定された EXIT トラップが実行される時のリダイレクトが正しくないことがある。

たとえば

  1. yash -c 'var=1; trap "echo \$var" EXIT >/dev/null'
は 1 を出力するはずなのに何も出力しない。Trap 組込みを "finally_exit" で実行するかどうかの判定を trap 組込みの実行前に行っているため、trap 組込みを誤って "finally_exit" で実行してしまっているためである。

シェルの最後に実行されるコマンドが関数で、関数実行開始前にはトラップが設定されておらず、関数の中でトラップが設定されるような場合にも同じような問題が起こる。

チケットの履歴 (2 件中 2 件表示)

2011-02-17 18:41 更新者: magicant
  • 新しいチケット "EXIT トラップの実行時のリダイレクトがおかしい" が作成されました
2011-07-28 23:56 更新者: magicant
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2011-07-28 23:56 に更新されました
コメント

r2615 で修正。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする