shell中函數的使用


  函數是一個腳本代碼塊,你可以對它進行自定義命名,並且可以在腳本中任意位置使用這個函數。如果想要這個函數,只要調用這個函數的名稱就可以了。使用函數的好處在於模塊化以及代碼可讀性強。

(1).函數的創建語法

  函數的創建方法一:

function 函數名稱 {
    命令
}

  函數的創建方法二:

函數名稱() {
    命令
}

  注意:函數名稱在當前腳本必須唯一。

  調用函數的方法:

函數名稱 參數1 參數2 ......

  調用函數時可以傳遞參數,函數中使用$1、$2......來引用傳遞的參數。

(2).函數的使用實例

  實例1:

[root@youxi1 ~]# vim a.sh
#!/bin/bash
function fun1 {
    echo "hello world"
}

fun2() {
    echo $[$1+$2]
}

fun1
fun2 1 2
[root@youxi1 ~]# sh a.sh
hello world
3

  實例2:如果存在相同名稱的函數,以最后一個為准

[root@youxi1 ~]# vim b.sh
#!/bin/bash
function fun1 {
    echo "hello world"
}

fun1() {
    echo "This is rewrite"
}

fun1
[root@youxi1 ~]# sh b.sh
This is rewrite

(3).return返回值

  使用return命令來退出函數並返回特定的退出碼($?)

[root@youxi1 ~]# vim c.sh
#!/bin/bash
fun1() {
  echo "return 3"
  return 3
  echo "why?"
}

fun1
[root@youxi1 ~]# sh c.sh
return 3
[root@youxi1 ~]# echo $?
3

  注意:return一般是在函數的最后一行,因為一旦執行return命令,該函數后面的命令就不執行了。

  return與exit的區別:return和exit都可以返回退出碼,但是不同的是,return是退出函數,而exit是退出整個腳本。

(4).函數值賦給變量

  如下方實例中顯示,此時的函數就相當於一個命令,需要使用$()或``調用。

[root@youxi1 ~]# vim d.sh
#!/bin/bash
fun1() {
  read -p "Input a number:" num
  echo $[num*5]
}

num2=`fun1`  #也可以是$(fun1)
echo $num2
[root@youxi1 ~]# sh d.sh 
Input a number:2
10

(5).外部參數傳入函數

  前面已經提到過,調用函數可以在后面跟隨參數,函數內部可以使用$n的形式調用。

[root@youxi1 ~]# vim e.sh
#!/bin/bash
fun1() {
  echo $1
}

fun2() {
  echo $1
}

fun3() {
 echo $1
}

fun1 $1
fun2 /root/a.sh
fun3 5
[root@youxi1 ~]# sh e.sh hello
hello
/root/a.sh
5

(6).函數的參數

  在一個腳本當中,函數外的參數,函數可以直接調用,並且函數內的參數,只要運行過函數,外部也可以直接調用。

[root@youxi1 ~]# vim f.sh
#!/bin/bash
num=5
fun1() {
  num2=$[num*10]
}
fun1
echo $num2
[root@youxi1 ~]# sh f.sh
50

  注意:腳本內的參數僅限腳本內使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM