Shell编程-函数

头条号:浩渺烟波

Shell中的函数分为两种,一种是系统函数,一种是自定义函数

系统函数: basename,获取最后的文件名,如果第二个参数加上后缀就会去掉后缀

<code>[root@VM_0_11_centos shell]# basename /root/training/shell/shell_for.sh
shell_for.sh
[root@VM_0_11_centos shell]# basename /root/training/shell/shell_for.sh .sh
shell_for/<code>

系统函数: dirname 跟basename正好相反,返回的是初文件名以外的目录

<code>[root@VM_0_11_centos shell]# dirname /root/training/shell/shell_for.sh
/root/training/shell/<code>

自定义函数: 自定义函数的各式如下:

<code>[function] functionName [()] {
    具体逻辑
    [return int]
}/<code>

中括号里面的都是选的,也就是说可以不加,function可以不加,甚至函数名后面的括号也可以不加,但是要注意空格,返回值也可以不加,如果不加则默认是最后一条语句的结果作为返回值,return后面跟的是数值

调用的话直接functionName即可

怎么传参数呢?函数名括号后面是没有参数的。实际上传的时候直接在跟在调用的命令后面,函数体里面回去参数使用$n,记得在上几篇说过一个知识点$n可以获取命令行的参数,这里跟那里是一样的。$1表示第一个参数,$2表示第二个参数,依次类推,10之后用${10}.比如:

<code> getSum () {
        SUM=$[$1+$2]
        echo "sum = $SUM"
        return $SUM
}
getSum 10 20
echo $?/<code>

结果:

<code>[root@VM_0_11_centos shell]# ./shell_fun.sh  
sum = 30
30/<code>

上面有一个$?,这个操作符是预定义变量表示的最后的执行状态,这个前面也说过,还有两个$$表示当前进程的pid,$!表示的是最后一个后台进程的pid。

未完待续!

参考:https://www.runoob.com/linux/linux-shell-func.html


Shell编程-函数


分享到:


相關文章: