第14课时 函数
14.1 创建和使用函数
格式:name() {list;}
Shell函数的一个重要特征是:可以用它们代替二进制可执行文件或Shell内置的同名命令。
例如:
cd() {chdir ${1:-$HOME}; PSI="`pwd`$"; export PSI;}
该语句用了一个函数代替了cd命令,该函数改变目录,同时设置了主Shell提示符$PSI使其包含当前目录。
Shell脚本中的函数变量作用范围与其他的脚本语言不通,例如在PHP中,当脚本执行超出函数范围时本内部变量就
会消失,所以不删除也没有问题。
而Shell中,变量被标识为全局变量,所以必须小心管理。
例如:
$ test(){ test=123; }
$ test
$ echo $test #输出123
第15课时 文本过滤器
调用Shell脚本常常是为了对执行的命令所产生的输出进行操作和格式化。
1)head
2)tail
3)grep
4)sort
5)uniq
6)tr
15.1.1 head和tail命令
格式:head [-n lines] files
如果没有-n lines,则显示标准的前10行。
15.1.2 tail命令
格式:tail [-n lines] files
如果没有-n lines,则显示标准的最后10行。
-f选项,用于查看正在进行写操作的文件。
15.2 使用grep
grep命令使用户可以在文件中找到包含某个特殊单词或词组的行。
15.2.1 查找单词
格式:
grep word file
这里文件file指出想在哪些文件中搜素单词word,grep命令显示文件中包含单词word的每一行。
当指定多个文件时,grep命令在输出行之前加上包含该行的文件名。
-i选项,大小写不相关匹配。
15.2.2 从STDIN(标准输入)中读入
当没有指定文件时,grep在从STDIN输入的行中寻找匹配,这使得它可以与管道很好地连在一起。
例如:$ who | grep root
-v选项,列出与条件不符的行
15.2.3 行号
选项-n,结果列表返回行号
$ grep -n pipe ch15.doc
返回格式为:file:line number:line
15.2.4 只列出文件名
有时,只需返回含有某word的文件名。
可以使用-l选项。
例如:$ grep -l php *
返回:index.php