> / dev / null 2>& 1仍然在stdout中有输出

时间:2014-12-02 09:58:04

标签: shell

我尝试以下方法:

#!/bin/bash

var=$(< temp.temp) > /dev/null 2>&1

echo $var

我预计没有输出是否存在temp.temp。 但是当我尝试这些命令时,它仍然有输出。你可以帮忙吗?谢谢。

2 个答案:

答案 0 :(得分:1)

var=$(< temp.temp) > /dev/null 2>&1

应该是

var=$(>/dev/null 2>&1 < temp.temp)

您为变量赋值并重定向该赋值的输出,这没有任何意义。

你需要的是首先重定向stdoutstderr,然后尝试从文件中读取,因为它从左到右解释,这意味着当你尝试阅读temp.tempstdoutstderr 没有重定向,因此您会看到有关未找到文件或文件内容的消息

答案 1 :(得分:1)

像这样使用:

{ var=$(<temp.temp); } 2>/dev/null