如何在UNIX

时间:2016-08-21 15:38:12

标签: shell variables scripting command ksh

在某些情况下,我在控制台输出中看到的内容与重定向后记录的内容不同。我在Linux / bash上看到了这个,但这个例子是ksh / OpenBSD。有办法解决这个问题吗?

例如:

# pfctl -ttable -Ttest 123.123.123.123 > result.txt
0/1 addresses match.
# more result.txt
result.txt (END)

换句话说,“0/1地址匹配”。是打印在控制台上,但我不能为我的生活把它变成文件,变量或任何东西。我用过$()和>这适用于大多数命令,但是偶尔会有一个命令在屏幕上吐出东西,但我没有通过重定向/管道得到任何东西。我希望有人能够阐明这种特殊性。

再次对比一下:

# OUTP=$(pfctl -tscanners -Ttest 123.123.123.123)
0/1 addresses match.
# echo $OUTP

#

(没有回应,变量不能保存控制台输出):

# OUTP=$(date)
# echo $OUTP
Sun Aug 21 08:33:37 PDT 2016
#

(变量包含整个控制台输出)

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的命令有2个不同的输出流 你需要将第二个(stderr)重新编写为第一个。(/ p>)

pfctl -ttable -Ttest 123.123.123.123 > result.txt 2>&1