首页 > 编程笔记

Linux命令行使用Shell脚本函数

脚本函数不仅可以用作 Shell 脚本命令,也可以用作命令行界面的命令。如果在 Shell 中定义了函数,可以从系统的任意目录使用这个函数。不需要考虑 PATH 环境变量是否包含函数文件所在目录。

Shell 识别出这个函数的方法有以下两种。

1、在命令行上创建函数

Shell 在键盘输入命令时解释命令,函数可以直接在命令行定义。有以下两种方法:

1) 将函数定义在一行命令中。在命令行中定义函数时,每条命令的结尾必须包含分号,以便于 Shell 知道命令在哪分开。命令如下所示:

[root@bogon ~]# function divem { echo $[ $1 / $2 ]; }
[root@bogon ~]# divem 20 5
4
[root@bogon ~]#


2) 将函数定义在多行命令中。使用这种方法不需要在每条命令的结尾添加分号,只需按 Enter 键。在函数末尾使用花括号时,Shell 知道定义函数结束。命令如下所示:

[root@bogon ~]# function multem {
> echo $[ $1 * $2 ]
> }
[root@bogon ~]# multem 4 5
20
[root@bogon ~]#

注意,在命令行上创建函数时需要注意,如果给函数起了一个与内建命令或另一个命令相同的名字,那么函数将会覆盖原来的命令。

2、在.Bashrc文件中定义函数

直接在命令行定义 Shell 函数的缺点是如果退出 Shell,函数定义就会失效。解决方法是将函数定义放在 Shell 每次启动都能重新载入的地方。

.bashrc 文件,无论 Bash Shell 是交互式启动,还是从已有 Shell 中启动新的 Shell,都会在主目录下查找这个文件。

1) 直接定义函数。在主目录下的 .bashrc 文件中可以直接定义函数,把需要写的函数放在文件的末尾。代码如下:

[root@bogon ~]# cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Function addem{
    echo $[ $1 + $2 ]
}

该函数会在下次启动新的 Bash Shell 时生效。

2) 读取函数文件。可以使用 source 命令(点操作符)将现有库文件的函数添加到 .bashrc 脚本中。

[root@bogon ~]# cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
. /root/myfuncs

确保包库文件的路径名正确,这样 Bash Shell 才能够找到该库函数。下次启动时,库中的所有函数都可以在命令行界面下使用。

[root@bogon ~]# addem 10 5
15

优秀文章