私は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
まず、$()
問題のある古い ``代わりにコマンド置換を使用し始めます。
あなたの場合、cat
STDERRストリーム(ファイル記述子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)
。