$(<ファイル)を使用してファイルを読み取るときにエラーをキャッチまたは削除できますか?

$(<ファイル)を使用してファイルを読み取るときにエラーをキャッチまたは削除できますか?

$(< file)たとえば、次のようにzshからファイルを読み取ることができます。

% print 'Hello, world!' > test
% x=$(< test); print $x
Hello, world!

ただし、次のエラーがstderrに印刷されます。

% x=$(< doesnt-exist); print $x
zsh: no such file or directory: doesnt-exist

# The actual error in my script, for posterity.
% x=$(< /sys/class/hwmon/hwmon4/temp2_input); print $x
zsh: error when reading /sys/class/hwmon/hwmon4/temp2_input: no such device or address

このエラーをキャッチまたは削除する方法はありますか?読みやすさをテストしたり、cat 2>&1終了コード(私が今使っているコード)を使って確認したりできますが、それがうまくいくかどうかを知りたいです$(< file)

ベストアンサー1

変数の割り当て時にも一般的な方法でリダイレクトが可能です。

x=$(< doesnt-exist) 2>/dev/null ; print -r -- $x

それは沈黙しなければなりません。

おすすめ記事