第12 章 显示数据

落爺英雄遲暮 提交于 2020-03-08 07:05:08

12.1  了解输入和输出

12.1.1 标准文件描述符  

linux 使用文件描述符,标识每个文件对象 

STDOUT  和  STDERR  

STDERR  时shell 发送  错误消息的  目的地,默认情况下 STDERR  和 STDOUT文件描述符

指向相同的位置,即显示器。重定向 STDOUT  不会自动重定向 STDERR 

12.1.2  重定向错误

ls  -al   badfile  2> test4    文件重定向符必须位于 > 前  

ls  -al  test1 test2  test3 2>test5  (文件test1  test2   存在)屏幕会显示1 ,2 信息  ,test3的错误信息

会重定向到test5

2.  重定向错误和数据

如果需要重定向 错误 和 输出, 需要两个 文件重定向符

ls  -al  test1  test2  test3  2>test5   1>test6

1>  重定向 STDOUT 

2> 重定向STDERR

也可以将 STDOUT  和 STDERR 重定向 到一个文件 (&)

ls -al test1  test2  test3   &> test5

12.2 在脚本中重定向输出

12.2.1  临时重定向

如果想故意在脚本中生成错误消息,可以将单个输出行重定向到 STDERR ,需要做的只是使用

输出重定向 符号,将  输出  重定向到 STDERR文件描述,还必须在文件描述符前面添加&

echo "this  is  a  error  message" >   &2

该行在脚本的STDERR指向的地方,而不是STDOUT指向的地方显示。

12.2.2 永久重定向

exec命令通知shell 在脚本执行期间重定向特定的文件描述

exec  2>testerror

echo "这条语句不会重定向 到testfile "

exec  1> testfile

echo "this is a test of   会重定向"

echo "this  is  a  two     会重定向"

echo "this is a three     会重定向"

exec 启动一个新shell ,并将STDOUT 文件描述符重定向到一个文件,

12.3 在脚本中重定向输入

exec  0 <   testfile              应该 从文件 testfile 而不是 STDIN  获取输入

count=1

while  read line

do

     echo "line   #$count : $line"

     count=$[ count +1 ]

done

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!