ファイル記述子が閉じていることを確認する

ファイル記述子が閉じていることを確認する

posix shでファイル記述子が開いていることを確認することは可能ですか?

ユーザー提供の拡張のスクリプトにオプションの入力ファイル記述子を指定すると、読み取りはすぐに失敗しますEBADF

#!/bin/sh
database_initialize()
{
   echo "create database bob;"
  # TODO check if open
  # Input file descriptor 3 is used to send to bootstrap
  cat <&3

}

database_initialize | mysqld --bootstrap

以下のLinux関連の項目を避けたいと思います。[ -s /proc/self/fd/3 ]

答え1

fd_is_open() (: >&"$1") 2>/dev/null;

if fd_is_open 7; then
   ...
fi

エラーメッセージを削除するにはfd 2を開く必要があるため、fd 2に誤った肯定が表示されます。

関連情報