shell中函數的使用

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

(1).函數的建立語法bash

  函數的建立方法一:模塊化

function 函數名稱 {
    命令
}

  函數的建立方法二:函數

函數名稱() {
    命令
}

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

  調用函數的方法:blog

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

  調用函數時能夠傳遞參數,函數中使用$一、$2......來引用傳遞的參數。it

(2).函數的使用實例io

  實例1:function

[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:若是存在相同名稱的函數,以最後一個爲準class

[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

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

相關文章
相關標籤/搜索