プロセス置換の結果がファイルパスであるかどうかを確認する方法

プロセス置換の結果がファイルパスであるかどうかを確認する方法

私がこうすれば:

echo <(cat)

私は得る:

/dev/fd/63

したがって、コマンドラインには次のものがあります。

myapp -f <(cat)

実行すると、次のエラーが発生します。

-fフラグの後にファイルを渡す必要があります。解析されたファイルパスは「/dev/fd/63」です。ファイルシステムにパスが存在しないようです。

プロセス置換の結果が実際のファイルであることを確認する方法(検証目的)は何ですか?これはエラーを生成する私のbashコードです。

  if [[ -L "$file_path" ]]; then
     file_path="$(readlink "$file_path")";
  fi

  if [[ ! -f "$file_path" ]]; then
    echo "You need to pass a file after the -f flag. The resolved file path was: '$file_path'. This path did not appear to exist on the filesystem".;
    return 1;
  fi

確認コードを削除すると、次の結果が表示されます。

次のファイルを読み取るために開くことができません:/dev/fd/63 EBADF: '/dev/fd/63'を開くファイル記述子が正しくありません。

パスから読み取るために使用するnode.jsコードは次のとおりです。

const fd = fs.openSync(file_path, 'r');
fs.read(fd, ...);

ベストアンサー1

Bashで文字列値が現在のシステムへのパスであることを確認するには[[ -e "$path" ]]。パスが次のようになっていることを確認してください。存在する、そしてそれが指すファイルの種類については何もしません。

おすすめ記事