ファイルを読んでstderrリダイレクト

ファイルを読んでstderrリダイレクト

次のようにファイルの内容を変数として読みました。

var=$(<somefile)

ただし、ファイルが存在しない場合は、対応するエラーメッセージが表示されます。

bash: somefile: No such file or directory

catコマンドを使用せずにstderrを> / dev / nullにリダイレクトできますか?

ベストアンサー1

この場合、以下を使用できますcat

var=$( cat somefile 2>/dev/null )

または、ファイルが最初に存在するかどうかをテストします。

if [ -f somefile ]; then
    var=$(<somefile)
fi

前の例の競合状態を回避するには(理論的にはテストと読み取りの間にファイルが消える可能性があります):

if cp somefile myname 2>/dev/null; then
    var=$(<myname)
    rm -f myname
fi

以下は機能しません:

var=$(<somefile) 2>/dev/null
var=$(<somefile 2>/dev/null)

おすすめ記事