私がこうすれば:
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" ]]
。パスが次のようになっていることを確認してください。存在する、そしてそれが指すファイルの種類については何もしません。