shell编程小技巧2:将多行命令输出到一个文件中

当将多个命令的结果输出到同一个文件中的时候,第一个命令会使用>符号,而后面的命令必须使用>>符号,因为>会覆盖掉文件原有的内容,从而创建一个新的文件,而>>表示追加文件内容,它会在文件原有内容基础上进行追加。

举个例子:

$ echo "Hello, world!" > a.txt
$ echo "Hello, Shell!" >> a.txt

$ cat a.txt
Hello, world!
Hello, Shell!

这样的写法存在一个潜在的问题,即不够美观,并且当运行的命令较多时容易产生混乱,若第一行后面的命令不小心用了>符号而没有用>>符号,那么会使得之前命令的输出全部丢失!后果非常严重!

因此一种更好的方式是借助shell的括号()来将多行命令的结果输出到一个文件中,使用括号以后上述命令可以改为:

$ (
    echo "Hello, world!";
    echo "Hello, Shell!"
) > b.txt

$ cat b.txt
Hello, world!
Hello, Shell!

即将多行命令放在括号内部,最后使用一个重定向符号>即可。

这里的括号表示shell的命令组,shell在遇到括号时会新创建一个子shell来执行其中的命令,当执行结束后子shell将被销毁,而其中定义的变量也将会消失,因此最好不要在子shell定义变量。

此外子shell可以使用父shell定义的变量,例如上面的例子改成这样也是可以运行的:

$ a="Hello, world!"
$ (
    echo $a;
    echo "Hello, Shell!"
) > b.txt

$ cat b.txt
Hello, world!
Hello, Shell!

参考链接:shell 中各种括号的作用()、(())、[]、[[]]、{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值