ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

[Linux Shell学习系列十一]脚本输入处理-1输入和输出

2020-06-01 14:05:19  阅读:270  来源: 互联网

标签:文件 echonum Shell 输出 标准 sh Linux 输入


D20

几乎所有的命令都会产生到屏幕的输出和从键盘获取输入,而在Linux系统中可以将输出发送到指定的文件,或从文件中读取输入。在一个命令执行之前,它的输入和输出可以使用由Shell解释的特殊标记重定向:即改变输入或输出的默认路径。

在Linux中一切皆文件,所以你的硬件在Linux系统中同样地表示为文件。

0:标准输入——键盘:从文件(默认是键盘)读取输入;

1:标准输出——屏幕:发送数据到文件(默认是屏幕);

2:标准错误——屏幕:发送所有错误信息到一个文件(默认是屏幕)。

上述三个数字是标准的POSIX字符,也称为文件描述符。每个Linux命令都会使用上述的流与用户或其他系统程序进行交互。

 

1. 标准输入

在Shell运行任何命令之前,它先尝试打开文件进行读取。如果打开文件失败,Shell将以一个错误退出并不运行命令;如果打开文件成功,Shell使用打开的文件的文件描述符作为命令的标准输入文件描述符。

标准输入具有以下特点:

1)它是默认的输入方法,被所有命令使用来读取输入;

2)用数字0表示;

3)也被称作stdin;

4)默认的标准输入设备是键盘。

 

操作符<是输入重定向操作符。

语法:command < input_filename

$ cat < /etc/inittab #在屏幕上显示/etc/inittab内容

 其标准输入的数据流如下图:

示例:

 

 

$ cat list.txt 
ab dde
ab   dde
abde
333
a

$ sort < list.txt #利用标准输入对文件内容进行排序
333
a
ab   dde
ab dde
abde

 

 2. 标准输出

标准输出有如下特点:

1)它被命令用来写入或显示命令自身的输出;

2)它用数字1表示;

3)也被称作stdout;

4)默认的标准输出设备是屏幕。

 

操作符>是输出重定向操作符。

语法:command > output_filename

Shell首先尝试打开用于写入的文件output_filename,如果成功,就将命令的标准输出发送到新打开的文件;如果文件打开失败,整个命令就会失败。

ls > /tmp/output.txt #将ls命令的输出到output.txt文件(文件不存在会自动创建;文件存在则会被重写)

 其标准输出的数据流如下图:

 

 示例:

$ ./echonum.sh > num.txt #将脚本的输出保存到文件

 

3. 标准错误

标准错误具有如下特点:

1)它是默认的错误输出方法,被用于写入所有系统错误信息;

2)它用数字2表示;

3)也被称为stderr;

4)默认的标准输出设备是屏幕或显示器。

操作符2>是标准错误重定向操作符。

语法:command 2> errors_filename

Shell首先打开文件errors_filename用于写入,获得这个文件的文件描述符,并用它替换文件描述符2,从而将任何写到标准错误的内容被写到errors_filename。

$ cat echonum.sh 
#!/bin/bash
#202005

for ( i = 0; i < 3; i++ )) #此处错误:缺少(
do
        for (( j = 0; j < 5; j++ ))
        do
                echo -n "* "
        done

        echo ""
done

$ ./echonum.sh #直接执行脚本,标准错误输出在屏幕
./echonum.sh: line 4: syntax error near unexpected token `('
./echonum.sh: line 4: `for ( i = 0; i < 3; i++ ))'

$ ./echonum.sh 2> nums_error.txt #执行时将标准错误重定向到文件,不会输出到屏幕

$ cat nums_error.txt #查看文件内容
./echonum.sh: line 4: syntax error near unexpected token `('
./echonum.sh: line 4: `for ( i = 0; i < 3; i++ ))'

其标准错误的数据流如下图:

 

 

本节结束

 

标签:文件,echonum,Shell,输出,标准,sh,Linux,输入
来源: https://www.cnblogs.com/workingdiary/p/13024828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有