十年运维系列之基础篇 - Linux
作者:曾林
联系:1494445739@qq.com
版权:文章未经同意请勿转载
本小节中将谈论一些比较琐碎零散的知识。这些知识虽然不太经常使用,但是却对特定的程序设计问题大有帮助。下面将学习这方面的内容。
bash允许将命令组合到一起使用,这有两种方式,一种是利用组命令,另一种是使用子shell。下面是这两种方式的语法实例。
组命令:
{ command1; command2; [command3;...] }
子shell:
(command1; command2; [command3;...])
这两种形式的区别在于,组命令使用花括号将其命令括起来,而子shell则用圆括号。指的注意的是,在bash实现组命令时,必须使用一个空格将花括号与命令分开,并且在闭合花括号前使用分号或是换行来结束最后的命令。执行结果如下图所示:
组命令和子shell有什么用途呢?它们都可以用于管理重定向。下面让我们看一个在多个命令中执行重定向的脚本段。
1 ls -al > output.txt 2 echo "Listing of foo.txt" >> output.txt 3 cat foo.txt >> output.txt
显而易见,3条命令将输出重定向为output.txt文件。使用组命令,可以按照如下的方式编码。
{ ls -l; echo "Listing of foo.txt"; cat foo.txt; } > output.txt (ls -l; echo "Listing of foo.txt"; cat foo.txt;) > output.txt
使用这个技术,可以减少一些输入,但是组命令或子shell真正有价值的地方在于管道的使用。当创建命令管道时,通常将多条命令的结果输出到一条流中,这很有用。组命令和子shell使得这一点变得简单。
原文:http://www.cnblogs.com/jplatformx/p/4362186.html