bash shell函数的定义及变量的简单说明

From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html

函数:

“函数是一种脚本内脚本”,程序员很难想像没有函数的日子,至少我会比较痛恨。

所以了解函数的定义也就是学习bash的一大要点了。

函数大大增强了shell的编程能力,主要原因有如下两点:

  1. 当你调用一个函数时,它已经在shell的内存中;因此函数运行的很快。
  2. 将较长的shell脚本组织成各种容易开发和维护的模块是理想的。


呃,针对第一点,现在计算机的内存那是相当的便宜,大家不用再担心钱了吧?

来个4G的条子,当然用XP你就用3.5G吧,除非你扩展一下。。

定义一个函数,就是令shell在内存中保存其名字和定义(也就是其包含的shell命令)。如果你要在以后运行函数,只须鍵入其名字,后跟任意参数即可,就好像它是一个shell脚本

要定义一个函数有两种格式

function functname
{
      shellcommands
}

functname()
{
      shellcommands
}

这俩方法,其实是一样的,没啥本质及功能上的区别。

使用unset -f functname删除一个函数定义。

unset -ffunctname

可以使用如下命令来查找到登录会话里定义的函数

declare -f

嘿嘿,咋样?是不是显示的内容太长?嗯。用管道命令more来输出吧

declare -f | more

如果只想看函数名的话就用

declare -F

除了优势,函数和脚本有两个重要差别

  1. 当通过名字调用时,函数不在单独进程里运行,而脚本却可以。运行一个函数的语义更类似于登录时.bash_profile中的命令或用source命令调用脚本时的情况。
  2. 如果一个函数与一个脚本或可执行程序(也有可能是脚本啊)有相同的名字,则函数优先。

看出来了吧?“函数优先”,为啥呢?这里说一下在shell中鍵入一个命令时,各种资源的优先级次序:

  1. 别名
  2. 关鍵字,例如function,以及if和for等
  3. 函数
  4. 内置命令,如cd和type等
  5. 脚本和可执行程序(在最后哦),shell按在PATH环境变量中列出的目录中对其进行搜索

不过,呃,这个顺序是可以改变的哈。可以使用内置的command builtin和enable改变优先级次序。

它允许你将函数、别名和脚本文件定义为同样的名字,并选择要执行的一个。

变量:
呼,终于说到变量了。。嗯。没事这个短。。

简单地说:变量被命名用以存储数据,通常格式为字符串,其值可使用$符号加名字获得。某些变量称为环境变量,按惯例以大写字母命名,其取值对子进行已知(使用export语句)

呵,就这些。嘿嘿。。因为后面的内容不能放在这一节里了。太长了,呼呼。。

相关文章
  • shell vsunix( 9)之前已经写过几节关于shell的笔记了,可是却一直没有介绍一下,到底什么是shell。呃,经过b...
  • bashshell脚本的运行方式( 9 )以下内容部分直接摘录自《学习bash》,这又是我一个新的读书笔记。希望能给大家带来帮助。...
  • shell变量语法详解--两种声明变量方式,及大括号的作用( 4)貌似之前写技术类博客的做法不是很正确,嗯,一写就一大长篇,就算真正有需要的人看也会烦...
  • shell对$@和$*进行引用( 2 )嘿,每次看到“$”符号我都会两眼冒光,呵,没办法,在这鄙视“资本主义”社会呢。嗯。哈...
  • shell命令替换之前介绍过shell有两种方式可以取得变量的值:通过赋值语句,或者是以命令参数传递给脚本。...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值