シェル標準エラーを /dev/null

シェル標準エラーを /dev/null

私はPIDファイルを持っていて、PID番号を取得したいと思います。それで、それが私がやっていることです。

[root@linux ~]# PID=`cat /usr/local/foo/var/run/foo.pid`
[root@linux ~]# echo $PID
3414

時々このファイルが存在せずファイルエラーが発生することがありますが、ファイルが存在しないとエラーが発生しないことを指定したいと思います。

[root@linux ~]# PID=`cat /usr/local/foo/var/run/foo.pid`
cat: /usr/local/foo/var/run/foo.pid: No such file or directory

使用しようとしても2&> /dev/null機能しません。私が何を間違っているのでしょうか?

ベストアンサー1

まず、$()問題のある古い ``代わりにコマンド置換を使用し始めます。

あなたの場合、catSTDERRストリーム(ファイル記述子2)にファイルがない場合は、エラーメッセージが表示されます。

susbstutionコマンドを使用すると、STDOUTの内容を変数に保存できますPID。したがって、ファイルが存在しないときにエラーメッセージを削除するには、ファイルディスクリプタ2を次にリダイレクトします/dev/null

PID=$(cat /usr/local/foo/var/run/foo.pid 2>/dev/null)

zshデリバティブではkshショートカットを使用できますcat

PID=$(< /usr/local/foo/var/run/foo.pid 2>/dev/null)

bash利用可能a=$(<file)ですがa=$(<file 2>/dev/null)

おすすめ記事