2013-07-18 174 views
1

於是我找到這個答案的時候,並沒有爲我工作用>的/ dev/null的。無法找到其他任何東西。設置變量

Using >nul in a variable

我試圖做的是防止輸出設置這樣的變量時。

var=$(/bin/command.out) 

如果該命令不會產生錯誤,那就沒有問題了。但是,如果這樣做,它將全部輸出到終端。我試着添加這個,但它似乎被忽略。

var=$(/bin/command.out) > /dev/null 

我已經把所有的東西都放在了引號的右邊。我試着做那個人建議的轉義字符。沒有運氣。

謝謝。

剛剛意識到這種聯繫的批次。我在bash工作就是這麼清楚。

回答

2

所以問題很可能正在打印到STDERR錯誤。有兩個「通道」,通過它們可以向終端發送消息,其中一個稱爲STDOUT,用於大多數通用輸出,另一個是STDERR,用於錯誤和警告。當你寫:

command > /dev/null 

你只是告訴它指揮STDOUT到/ dev/null。 STDERR仍然會去終端。如果你想趕上這兩個,你可以做這樣的事情:

command 1> /dev/null 2> /dev/null 

與stderr關聯的數量爲2,stdout是1,所以這是說,所有的通道1的消息重定向到/ dev/null的並且也做同樣在通道2的所有消息通常情況下,1是隱含的,即當你只是把它>自動重定向STDOUT。

因此,在你的榜樣,你會想是這樣的:

var=$(/bin/command.out 2> /dev/null) 

這樣,如果你的命令barfs的BARF習慣可以看出,和VAR只會是空的。我認爲這是你想要的

4

你需要

var=$(/bin/command.out 2> /dev/null) 

例如

$ var=$(not_a_command 2> /dev/null) 
$ echo $var 

$(uname 2> /dev/null) 
$ echo $var 
Linux 

有兩個輸出在Linux中:

  • 1>(通常稱爲STDOUT),它是輸出
  • 2>(稱爲STDERR),這是誤差輸出。

這是誤差輸出,在寫消息。

您可以從「高級Bash腳本編程指南」的以下章節找到更多的細節:
Chapter 20. I/O Redirection

+0

謝謝。這正是我所需要的。 – user2503227