歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux shell入門之函數應用

Linux shell入門之函數應用

日期:2017/3/1 9:26:21   编辑:SHELL編程

最近在學習Linux shell編程,文中若有錯誤的地方還望各位批評指正。

先來看一個簡單的求和函數


#!/bin/bash
#a test about function
f_sum 7 8
function f_sum(){
   return $(($1+$2));
}
f_sum 3 5;
total=$(f_sum 3 6);
echo $total,$?;


注意幾個問題:
1.shell是逐行執行,所以要在函數聲明之後才可調用,否則會有錯誤
2.我們要獲得函數的返回值只能通過$?來獲得,不可以通過變量拿到返回值。


再看看關於變量作用域的測試:

#!/bin/bash
#a test about function
echo $(uname)
num=100
uname(){
   echo "my name is lenve"
   ((num++))
   return 250
}
changeVar(){
  local num=20
   ((num++))
   echo $num
}
uname;
echo $?
echo $num;
changeVar;
echo $num;

輸出:


要點:
1.第一個輸出Linux是第一行代碼執行的結果,這是調用了系統函數
2.調用uname,系統會優先調用這個腳本中的函數,找到了直接調用,找不到再找系統函數。於是輸出my name is lenve
3.250是uname函數的返回值
4.101是由於num在uname函數中自增1導致的
5.21表示如果函數中定義了與函數外部同名的變量,函數內部使用的是內部定義的變量而不是全局變量
6.101進一步佐證了第5點

Linux Shell在while中用read從鍵盤輸入 http://www.linuxidc.com/Linux/2015-06/118831.htm

Linux Shell 程序調試 http://www.linuxidc.com/Linux/2015-07/119880.htm

Linux Shell腳本面試25問 http://www.linuxidc.com/Linux/2015-04/116474.htm

Linux/Unix Shell 參數傳遞到SQL腳本 http://www.linuxidc.com/Linux/2013-03/80568.htm

Shell腳本中參數傳遞方法介紹 http://www.linuxidc.com/Linux/2012-08/69155.htm

Shell腳本傳遞命令行參數 http://www.linuxidc.com/Linux/2012-01/52192.htm

Linux Shell 通配符、轉義字符、元字符、特殊字符 http://www.linuxidc.com/Linux/2014-10/108111.htm

Copyright © Linux教程網 All Rights Reserved