..

bash中函数的使用方法

函数定义

    bash是shell的一种,这篇博客主要是讲关于bash中函数的定义和使用,bash的函数可以定义在.bashrc中,也可以定义在/etc/profile中,定义完了以后source一下就能直接在当前登录的shell中调用,比如我在.bashrc中定义了cool函数:

function cool(){
	echo "$1,你就是最帅的那个人!"
}

然后 source .bashrc,就可以在命令中使用这个函数了

hellojukay@deepin:~$ cool hellojukay
hellojukay,你就是最帅的那个人!
hellojukay@deepin:~$ 

    bash还可以在命令行中直接定义:

:() { :|:& };:

    上面这行代码就是非常著名的bash炸,它定义了一个名字叫 : 的函数,这个函数的函数提就是地柜的调用自己,这样代码除了定了这个函数,它同事也调用这个自己的定义的这个函数,所以当你执行这行命令的时候,你可能很快就会因为内存耗尽而死机。

一个有用的例子

  再给一个有用的例子,我们进场需要将一个自定义的目录添加到当前用户的path环境中,比如安装jdk的时候,就需要把java和javac的可执行文件加入到path中,那么我们就可以写一个append函数,将给定的路径加入到path中,比如:

function append(){
	export PATH=$PATH:$1
}
export GOROOT=/home/hellojukay/Data/Bin/go
export GOPATH=/home/hellojukay/Data/Code/Go
export NODEHOME=/home/hellojukay/Data/Bin/node

append $GOPATH/bin
append $GOROOT/bin
append $NODEHOME/bin

我就是这样安装go和node的,这里还有一个技巧需要提及一下。

/home/hellojukay/Data/Bin/go

这是我安装go的目录,但是它并不是一个真正的目录,而是一个link,指向的是go1.10的安装目录,这样做的好处是,下次我需要安装别的版本的go,我不需要卸载当前版本的golang,我只需要修改一下当前这个link执行的文件夹,这样就可以同事安装多个版本,并且随便切换版本了。

其他技巧

    在命令行中调用bash函数和调用其他命令没有任何区别。那么我如何知道当前我使用的这个命令是一个bash function还是一个可执行文件呢,使用type命令就能做到.

hellojukay@deepin:~$ type cool
cool 是函数
cool () 
{ 
    echo "$1,你就是最帅的那个人!"
}

这里显示出来了cool是一个函数,并且还展示出了cool这个函数的源码.

hellojukay@deepin:~$ type cd
cd 是 shell 内建
hellojukay@deepin:~$ 
hellojukay@deepin:~$ type ls
ls 是 `ls --color=auto' 的别名
hellojukay@deepin:~$