next up previous contents
Next: 實機練習題 Up: 迴圈 Previous: until 迴圈   Contents

function 功能

  1. 利用 function 功能,語法:
    function fname() {
    	程式段
    }
    
  2. 計算數字階層 (factorial) 是程式使用函式的典型例子,以下範例輸入一字串,取出數字部分並分別計算其「階層」值。
    [dywang@dywmac zzz]$ vim sh15.sh 
    [dywang@dywmac zzz]$ cat sh15.sh
    #!/bin/bash
    
    factorial(){
    	if [ "$1" -gt "1" ]; then
    		i=$(($1 - 1))
    		j=$(factorial $i)
    		k=$(($1 * j))
    		echo $k
    	else
    		echo 1
    	fi
    }
    
    num=$(echo $@ | egrep -o "[0-9]+")
    for i in $num; do
    	result=$(factorial $i)
    	echo "$i!=$result"
    done
    
  3. 執行結果。
    [dywang@dywmac zzz]$ sh sh15.sh 23nmdf4sd5 7u8
    23!=8128291617894825984
    4!=24
    5!=120
    7!=5040
    8!=40320
    
  4. shell 腳本是直譯程式,使用的函式一定要寫在呼叫程式碼之前,否則無法呼叫。
    [dywang@dywmac zzz]$ cat sh15.sh 
    #!/bin/bash
    
    num=$(echo $@ | egrep -o "[0-9]+")
    for i in $num; do
    	result=$(factorial $i)
    	echo "$i!=$result"
    done
    
    factorial(){
    	if [ "$1" -gt "1" ]; then
    		i=$(($1 - 1))
    		j=$(factorial $i)
    		k=$(($1 * j))
    		echo $k
    	else
    		echo 1
    	fi
    }
    
  5. 執行結果,找不到命令 (函式) factroial。
    [dywang@dywmac zzz]$ sh sh15.sh 23nmdf
    sh15.sh: line 5: factorial: command not found
    23!=
    



De-Yu Wang 2019-08-12