作为一种解释性语言,尽管 bash 对编程提供了一定的支持,但是在某些方面却存在一些限制。本文将逐一探讨在 bash 中编写递归函数时需要注意的返回值、参数传递和性能等方面的问题,并给出可能的解决方法,最后对如何优化 shell 脚本性能提供了一个建议。
前言 作为 Linux/Unix 系统上内核与用户之间的接口,shell 由于使用方便、可交互能力强、具有强大的编程能力等特性而受到广泛的应用。bash(Bourne Again shell)是对 Bourne shell 的扩展,并且综合了很多 csh 和 Korn Shell 中的优点,使得 bash 具有非常灵活且强大的编程接口,同时又有很友好的用户界面。bash 所提供的诸如命令补齐、通配符、命令历史记录、别名之类的新特性,使其迅速成为很多用户的首选。
然而,作为一种解释性语言,bash 在编程能力方面提供的支持并不像其他编译性的语言(例如 C 语言)那样完善,执行效率也会低很多,这些缺点在编写函数(尤其是递归函数)时都展现的一览无余。本文将从经典的 fork 炸弹入手,逐一介绍在 bash 中编写递归函数时需要注意问题,并探讨各种问题的解决方案。
尽管本文是以 bash 为例介绍相关概念,但是类似的思想基本上也适用于其他 shell。
递归经典:fork炸弹 返回值问题 参数传递问题 性能问题
作者简介 冯锐,软件工程师,目前在 IBM 开发中心从事 AIX 性能测试方面的工作。邮箱(fengrui@cn.ibm.com)。 丁成,软件工程师,目前在 IBM 开发中心从事 AIX 性能测试方面的工作,邮箱(dingc@cn.ibm.com).
|