linux 输出重定向_shell脚本中的输入和输出(二)

5e09ba2471066e553c0896bfc76efaad.png

阻止命令输出

有时候可能不想显示脚本的输出,可以将STDERR或者STDOUT重定向给一个叫做null文件的特殊文件,该文件内部什么都没有。shell输出到null文件的任何数据都不会保存,全部都被丢掉了。

在linux系统上null文件的标准位置是/dev/null。重定向到该位置的任何数据都会被丢掉。

普通输出重定向到/dev/null

演示代码如下:

4f3ba2b2202945d1eb04851ab1cf4c63.png

也可以使用输出重定向来删除日志文件,此方法是清理过期日志文件非常好的办法

演示代码如下:

90c366cea36f4fc35e513c4f74a67053.png

普通输出重定向到/dev/null

演示代码如下:

ls -l 1> /dev/null

错误输出重定向到/dev/null

演示代码如下:

ls -l  not_exist_file  2> /dev/null

普通输出和错误输出重定向到/dev/null

演示代码如下:

ls -l  not_exist_file  &> /dev/null

昨天和今天的文章中都整理了重定向的语法,下面用一个例子演示一下重定向稍微高级点的用法。

有一个members.csv文件,文件内容如下:

Mayun,male,56,HangzhouMahuateng,male,54,ShenzhenWangfei,female,45,Beijing

现在需要读取该文件内容,然后创建insert语句,将数据插入数据库。

思考片刻。。。

操作过程如下:

b7accbe9583103effa344b0927009557.png

脚本代码如下:

#!/bin/bash# read .csv file and create INSERT statements for MYSQL outfile='members.sql'IFS=','while read name gender age locationdo    cat >> $outfile << EOF    INSERT INTO members (name, gender, age, location) VALUES('$name', '$gender', '$age', '$location');EOFdone  < $1

分析一下上面的脚本代码

1、最后一行的done < $1 

$1代表第一个命令行参数,它指明了待读取数据的文件

2、IFS=','

read语句会使用IFS字符解析读入的文本,这里将IFS指定为逗号

3、cat >> $outfile << EOF

这条语句中的输出追加重定向>>将cat命令的输出追加到由$outfile变量指定的文件中;

输入重定向<

4、 INSERT INTO members (name, gender, age, location) VALUES ('$name', '$gender', '$age', '$location');

上面的语句定义了一个标准的sql INSERT语句,其中的变量会read语句存入的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值