Shell-Script

外殼標準錯誤到 /dev/null

  • March 5, 2016

我有 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)

zshksh衍生品中,您可以使用快捷方式cat

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

bash中,您可以使用a=$(<file)但不能a=$(<file 2>/dev/null)

引用自:https://unix.stackexchange.com/questions/267663