Bash

丟棄標準輸出和錯誤

  • May 27, 2015

我已經在 bash 腳本中使用**/dev/null**重定向了我的輸出,但它仍然拋出錯誤。程式碼如下

ps -p $proc | fgrep $proc> /dev/null
if [ $? -ne '0' ] ; then
......
fi    

下面是錯誤

error: list of process IDs must follow -p

Usage:
ps [options]

Try 'ps --help <simple|list|output|threads|misc|all>'
 or 'ps --help <s|l|o|t|m|a>'
for additional help text.

For more details see ps(1).
Usage: fgrep [OPTION]... PATTERN [FILE]...
Try 'fgrep --help' for more information.

如何在不影響**$ 的情況下抑制此錯誤?**輸出?

您可以使用命令分組:

{ ps -p "$proc" | fgrep "$proc";} >/dev/null 2>&1

或將管道包裹在子殼中:

(ps -p "$proc" | fgrep "$proc") >/dev/null 2>&1

&> /dev/null扔掉stderrstdout。與其他答案相同,只是短了幾個字元。

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