歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell 函數返回值最佳實踐

shell函數返回值有三種方式:1、直接return通過$?來接收返回值;2、定義全局變量,通過全局變量來接收的方式,使用函數返回值。3、echo的方式,通過標准輸出來返回。

帶來一個問題,哪種方式比較好呢?經過血淋淋的教訓,第三種。第一和第二種,假如函數體中用到了管道,則相當於開啟了一個子進程。子進程中的修改、返回操作是無法反應到父進程的。所以,老高將在以後的腳本中,只用第三種方法,在shell的函數中返回值。

無圖無真相!上一段代碼先!

#!/bin/sh
checkInt(){
        expr $1 + 0 >/dev/null 2>&1
        [ $? -ne 0 ]&&echo 0
        echo $1
}
sum=0
while read line
do
        tmp=`echo $line|awk '{print $NF}'`
        tmp=$(checkInt $tmp)
        ((sum=$sum+$tmp))
done<test.log
echo $sum

Copyright © Linux教程網 All Rights Reserved