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編程-函數


分享到:


相關文章: