unix中的文件描述符

unix中的文件描述符

我有以下 shell 脚本:

pankaj@pankaj-Lenovo-G500:~$ cat demoscr
if [ $# -ne 2 ]
then
   echo "Error : Number are not supplied" 1>&2
   echo "Usage : $0 number1 number2" 1>&2
   exit 1
fi
ans=`expr $1 + $2`
echo "Sum is $ans"

当我运行 shell 脚本时,错误消息被打印出来,但 er1 文件中没有任何内容。为什么?

pankaj@pankaj-Lenovo-G500:~$ ./demoscr > er1
Error : Number are not supplied
Usage : ./demoscr number1 number2
pankaj@pankaj-Lenovo-G500:~$ cat er1
pankaj@pankaj-Lenovo-G500:~$ cat er1

答案1

简单>操作符将 STDOUT 重定向到文件。但是,您的脚本正在打印到 STDERR(请参阅命令1>&2末尾的echo)。这就是您在终端中看到文本而不是在日志文件中看到文本的原因。

2>您需要使用(仅重定向 STDERR)或&>(重定向 STDOUT 和 STDERR)来重定向脚本的输出。

如何将终端输出保存到文件?有关 Bash 中输出重定向到文件的更多详细信息。

相关内容