Shell-Script
外殼標準錯誤到 /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
但它不起作用,我做錯了什麼?
首先,開始使用
$()
for 命令替換而不是舊的、有問題的 `.在您的情況下,
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)
。