From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html
函数:
“函数是一种脚本内脚本”,程序员很难想像没有函数的日子,至少我会比较痛恨。
所以了解函数的定义也就是学习bash的一大要点了。
函数大大增强了shell的编程能力,主要原因有如下两点:
- 当你调用一个函数时,它已经在shell的内存中;因此函数运行的很快。
- 将较长的shell脚本组织成各种容易开发和维护的模块是理想的。
呃,针对第一点,现在计算机的内存那是相当的便宜,大家不用再担心钱了吧?
来个4G的条子,当然用XP你就用3.5G吧,除非你扩展一下。。
定义一个函数,就是令shell在内存中保存其名字和定义(也就是其包含的shell命令)。如果你要在以后运行函数,只须鍵入其名字,后跟任意参数即可,就好像它是一个shell脚本
要定义一个函数有两种格式
{
}
和
{
}
这俩方法,其实是一样的,没啥本质及功能上的区别。
使用unset -f functname删除一个函数定义。
可以使用如下命令来查找到登录会话里定义的函数
嘿嘿,咋样?是不是显示的内容太长?嗯。用管道命令more来输出吧
如果只想看函数名的话就用
除了优势,函数和脚本有两个重要差别
- 当通过名字调用时,函数不在单独进程里运行,而脚本却可以。运行一个函数的语义更类似于登录时.bash_profile中的命令或用source命令调用脚本时的情况。
- 如果一个函数与一个脚本或可执行程序(也有可能是脚本啊)有相同的名字,则函数优先。
看出来了吧?“函数优先”,为啥呢?这里说一下在shell中鍵入一个命令时,各种资源的优先级次序:
- 别名
- 关鍵字,例如function,以及if和for等
- 函数
- 内置命令,如cd和type等
- 脚本和可执行程序(在最后哦),shell按在PATH环境变量中列出的目录中对其进行搜索
不过,呃,这个顺序是可以改变的哈。可以使用内置的command builtin和enable改变优先级次序。
它允许你将函数、别名和脚本文件定义为同样的名字,并选择要执行的一个。
变量:
呼,终于说到变量了。。嗯。没事这个短。。
简单地说:变量被命名用以存储数据,通常格式为字符串,其值可使用$符号加名字获得。某些变量称为环境变量,按惯例以大写字母命名,其取值对子进行已知(使用export语句)
呵,就这些。嘿嘿。。因为后面的内容不能放在这一节里了。太长了,呼呼。。
- shell vsunix( 9)之前已经写过几节关于shell的笔记了,可是却一直没有介绍一下,到底什么是shell。呃,经过b...
- bashshell脚本的运行方式( 9 )以下内容部分直接摘录自《学习bash》,这又是我一个新的读书笔记。希望能给大家带来帮助。...
- shell变量语法详解--两种声明变量方式,及大括号的作用( 4)貌似之前写技术类博客的做法不是很正确,嗯,一写就一大长篇,就算真正有需要的人看也会烦...
- shell对$@和$*进行引用( 2 )嘿,每次看到“$”符号我都会两眼冒光,呵,没办法,在这鄙视“资本主义”社会呢。嗯。哈...
- shell命令替换之前介绍过shell有两种方式可以取得变量的值:通过赋值语句,或者是以命令参数传递给脚本。...