我有以下 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 中输出重定向到文件的更多详细信息。