Linux之Shell编程(12)--Shell输入/输出重定向实例演示
Posted 菠萝印象威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之Shell编程(12)--Shell输入/输出重定向实例演示相关的知识,希望对你有一定的参考价值。
一.Shell重定向简介
从标题我们可以知道,Shell的重定向有两种,第一种是输入重定向,另外一种就是输出重定向。其实,输入输出重定向就是改变输入与输出的方向。
输入输出方向是什么?
1.从键盘读取输入的数据,把数据拿到程序中(C语言程序、Shell 脚本程序等)使用,这是一种标准的输入方向,从键盘到程序。如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。
2.程序中会产生数据,这些数据直接呈现到屏幕上,这是另一种标准的输出方向,也就是从程序到显示器。如果改变了它的方向,数据就流向其它地方,这就是输出重定向。
二.Shell输出重定向
输出重定向是指命令的结果不输出到显示器上,而是输出到其它地方,一般是文件中,这样做的好处是可以将结果保存起来。
输出重定向命令如下:
命令 | 解释 |
---|---|
command > file | 将输出重定向到 file |
command >> file | 将输出以追加的方式重定向到 file。 |
command 2>file | 以覆盖的方式,把 command 的错误信息输出到 file 文件中。 |
command 2>>file | 以追加的方式,把 command 的错误信息输出到 file 文件中。 |
command >file 2>&1 | 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 |
command >>file 2>&1 | 以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 |
command >file1 2>file2 | 以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 |
command >>file1 2>>file2 | 以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 |
注意:
1.在输出重定向中,>代表的是覆盖,>>代表的是追加。
2.command >file或者command >> file,完整的写法是command 1 >file或者command 1 >> file.默认为1,即标准输出文件。
3.如果大于1则必须写,比如:command 2>file,即将错误的输出结果重定向到file中,这里的2和>之间不能有空格。
输出重定向实例演示:
#!/bin/bash
i=10
echo $i >log.txt
发现在本地会生成log.txt,打开会得到10。
如果改成echo $i >>log.txt
演示输入错误内容
#!/bin/bash
file="Java"
cd $file 2>>log.txt
结果:
这里执行output.sh不会报错,而是会把错误信息重定向到log.txt中。
去掉2直接运行会报错。
循环输出重定向实例演示:
#!/bin/bash
for i in i love china
do
echo $i >>log.txt
done
结果:
演示将正确信息和错误信息同时重定向到文件中:
#!/bin/bash
for i in i love china
do
echo $i >>log.txt
done
j=Java
cd $j >>log.txt 2>&1
结果:
三.Shell输入重定向
输入重定向就是改变输入的方向,不使用键盘作为命令输入的来源,而是使用文件作为命令的输入。
输入重定向命令如下:
命令 | 解释 |
---|---|
command <file | 将 file 文件中的内容作为 command 的输入。 |
command <file1 >file2 | 将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。 |
command <<END | 从键盘中读取数据,直到遇见结束符 END 才停止(结束符可以是任意的字符串,可以自己定义)。 |
和输出重定向类似,输入重定向的写法由>变为<,完整的写法是command 0<file,不写默认为0。
实例演示输入重定向:
以log.txt作为输入,输出log.txt的行数。
将log.txt作为输入,将对log.txt操作的结果输出到outfile.txt。
从键盘读取数据,直到遇到END才结束。
逐行读取文件内容。
#!/bin/bash
while read str; do
echo $str
done <log.txt
结果:
今天是高考的第一天,我在这里祝愿各位高考的学生旗开得胜。
以上是关于Linux之Shell编程(12)--Shell输入/输出重定向实例演示的主要内容,如果未能解决你的问题,请参考以下文章
linux12shell编程 --> 流程控制之select语句