每天三分钟搞定linux shell脚本19 shell中如何输出重定向

每天三分钟搞定linux shell脚本19 shell中如何输出重定向

首页冒险解谜重定向更新时间:2024-09-22

在脚本中有两个方法实现输出重定向,分别是临时重定向脚本中某一行输出,永久重定向脚本中的所有输出。

临时重定向

在脚本中如果想把某行输出重定向到对应的文件描述符,只要在重定向符号和文件描述符之间增加&即可,比如说标准错误,使用>&2。举例如下:

#/bin/bash

date >&2

echo "date is $(date)"

当不加重定位文件运行时,即:

./test49.sh

屏幕上显示结果为:

2019年 12月 23日 星期一 22:55:34 CST

date is 2019年 12月 23日 星期一 22:55:34 CST

若以重定向运行,即./test49.sh >file

屏幕上显示:

2019年 12月 23日 星期一 22:56:18 CST

file的内容为:

date is 2019年 12月 23日 星期一 22:56:18 CST

永久重定向

临时重定向只能对加了&符号的语句生效,可以如果想要把脚本中的多个输出都重定向的话就需要每一个输出都加上,这比较麻烦。但是通过永久重定向可以解决这个问题。永久重定向通过exec命令。比如

#/bin/bash

exec 1>testfile

date

echo "wu lin wai zhuan"

date

运行后,打开testfile,内容为:

2019年 12月 24日 星期二 22:52:13 CST

wu lin wai zhuan

2019年 12月 24日 星期二 22:52:13 CST

上面的exec命令是把标准输出重定向到testfile中,并且对整个shell的输出生效

注意上面的exec是启动了一个新进程并完成重定向。

有时候一个shell脚本中,想要向不同的文件重定向,或者不同的fd重定向到不同的文件,也可以使用exec做到。比如

#/bin/bash

exec 2>errfile

echo "normal line 1"

echo "normal line 2"

exec 1>normalfile

echo "normal line 3"

echos "error line 2"

运行后,屏幕输出:

normal line 1

normal line 2

normalfile内容为:

normal line 3

errfile内容为:

echos: 未找到命令

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved