头条号:浩渺烟波
Shell中的函数分为两种,一种是系统函数,一种是自定义函数
系统函数: basename,获取最后的文件名,如果第二个参数加上后缀就会去掉后缀
[root@VM_0_11_centos shell]# basename /root/training/shell/shell_for.shshell_for.sh[root@VM_0_11_centos shell]# basename /root/training/shell/shell_for.sh .shshell_for
系统函数: dirname 跟basename正好相反,返回的是初文件名以外的目录
[root@VM_0_11_centos shell]# dirname /root/training/shell/shell_for.sh/root/training/shell
自定义函数: 自定义函数的各式如下:
[function] functionName [()] { 具体逻辑 [return int]}
中括号里面的都是选的,也就是说可以不加,function可以不加,甚至函数名后面的括号也可以不加,但是要注意空格,返回值也可以不加,如果不加则默认是最后一条语句的结果作为返回值,return后面跟的是数值
调用的话直接functionName即可
怎么传参数呢?函数名括号后面是没有参数的。实际上传的时候直接在跟在调用的命令后面,函数体里面回去参数使用$n,记得在上几篇说过一个知识点$n可以获取命令行的参数,这里跟那里是一样的。$1表示第一个参数,$2表示第二个参数,依次类推,10之后用${10}.比如:
getSum () { SUM=$[$1+$2] echo "sum = $SUM" return $SUM}getSum 10 20echo $?
结果:
[root@VM_0_11_centos shell]# ./shell_fun.sh sum = 3030
上面有一个$?,这个操作符是预定义变量表示的最后的执行状态,这个前面也说过,还有两个$$表示当前进程的pid,$!表示的是最后一个后台进程的pid。
未完待续!
参考:https://www.runoob.com/linux/linux-shell-func.html