次のようにファイルの内容を変数として読みました。
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)
答え2
あなたはそれを使用することができます:
{ var=$(<somefile); } 2> /dev/null