1. 程式人生 > >Linux Shell指令碼程式設計--函式返回值

Linux Shell指令碼程式設計--函式返回值

Shell函式返回值,常用的兩種方式:returnecho

1) return 語句
shell函式的返回值,可以和其他語言的返回值一樣,通過return語句返回。
示例:

#!/bin/sh  
function test()  
{  
    echo "arg1 = $1"  
    if [ $1 = "1" ] ;then  
        return 1  
    else  
        return 0  
    fi  
}  
  
echo   
echo "test 1"  
test 1  
echo $?         # print return result  
  
echo   
echo "test 0"  
test 0  
echo $?         # print return result  
  
echo   
echo "test 2"  
test 2  
echo $?         # print return result  


輸出結果為:

test 1
arg1 = 1
1

---------------------

test 0
arg1 = 0
0

---------------------

test 2
arg1 = 2
0

---------------------

先定義了一個函式test,根據它輸入的引數是否為1來return 1或者return 0。
獲取函式的返回值通過呼叫函式,或者最後執行的值獲得。
另外,可以直接用函式的返回值用作if的判斷。
注意:return只能用來返回整數值,且和c的區別是返回為正確,其他的值為錯誤。

3) echo 返回值

其實在shell中,函式的返回值有一個非常安全的返回方式,即通過輸出到標準輸出返回。因為子程序會繼承父程序的標準輸出,因此,子程序的輸出也就直接反應到父程序。

示例:

#!/bin/sh  
function test()  
{  
    echo "arg1 = $1"  
    if [ $1 = "1" ] ;then  
        echo "1"  
    else  
        echo "0"  
    fi  
}  
  
echo   
echo "test 1"  
test 1  

  
echo   
echo "test 0"  
test 0  

  
echo   
echo "test 2"  
test 2  

結果:

test 1
arg1 = 1
1

---------------------

test 0
arg1 = 0
0

---------------------

test 2
arg1 = 2
0

怎麼?有沒有搞錯,這兩個函式幾乎沒什麼區別,對,它幾乎就是return和echo不一樣,但是有一點一定要注意,return不能向標準輸出一些不是結果的東西(也就是說,不能隨便echo一些不需要的資訊),比如除錯資訊,這些資訊可以重定向到一個檔案中解決,特別要注意的是,指令碼中用到其它類似grep這樣的命令的時候,一定要記得1>/dev/null 2>&1來空這些輸出資訊輸出到空裝置,避免這些命令的輸出。

相關推薦

Linux Shell指令碼程式設計函式返回

Shell函式返回值,常用的兩種方式:return,echo 1) return 語句shell函式的返回值,可以和其他語言的返回值一樣,通過return語句返回。示例: #!/bin/sh function test() { echo "arg1 =

Linux Shell指令碼程式設計awk命令詳解

簡單使用: awk :對於檔案中一行行的獨處來執行操作 。 awk -F :'{print $1,$4}'   :使用‘:’來分割這一行,把這一行的第一第四個域打印出來 。 詳細介紹: AWK命令介紹 awk語言的最基本功能是在檔案或字串中基於指定規則瀏覽和抽取資訊,awk抽取資訊後,才能進行其他

Linux Shell指令碼程式設計cut命令

cut cut命令可以從一個文字檔案或者文字流中提取文字列。 cut語法 [[email protected] ~]# cut -d'分隔字元' -f fields <==用於有特定分隔字元 [[email protected] ~]# cut

Linux Shell指令碼程式設計scp命令詳解

不同的Linux之間copy檔案常用有3種方法: 第一種就是ftp,也就是其中一臺Linux安裝ftp Server,這樣可以另外一臺使用ftp的client程式來進行檔案的copy。 第二種方法就是採用samba服務,類似Windows檔案copy 的方式來操作,比較簡潔方便。 第三種就是利用scp命令來

Linux Shell指令碼程式設計sed命令詳解

簡介 sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有

Linux Shell指令碼程式設計xargs命令詳解

xargs是給命令傳遞引數的一個過濾器,也是組合多個命令的一個工具。它把一個數據流分割為一些足夠小的塊,以方便過濾器和命令進行處理。通常情況下,xargs從管道或者stdin中讀取資料,但是它也能夠從檔案的輸出中讀取資料。xargs的預設命令是echo,這意味著通過管道傳遞給xargs的輸入將會包含換行和空

Linux shell指令碼程式設計函式

在編寫功能比較複雜的shell指令碼時,完成具體任務的程式碼有時會被重複使用,bash shell指令碼提供函式特性實現程式碼複用,函式是被賦予名稱的指令碼程式碼塊。 一、建立函式 在bash shell指令碼中建立函式的格式如下: function name() {

Linux-Shell指令碼程式設計基礎(1)

1. 我們一般在使用Linux系統的時候,都活接觸到shell指令碼的使用,例如我們經常在linux系統中使用的ls命令、cd命令等,都是衣蛾簡單而又基本的shell命令,在 linux系統中我們一般的使用如下的格式來進行shell指令碼的編寫: (1)格式 #!bin/bash e

Linux Shell指令碼程式設計 --awk命令詳解

簡單使用: awk :對於檔案中一行行的獨處來執行操作 。 awk -F :'{print $1,$4}'   :使用‘:’來分割這一行,把這一行的第一第四個域打印出來 。    

從新手到系統管理員(四):Linux Shell指令碼程式設計之數學(Part I)

本文由 [茶話匯] – [Qing] 編譯自 [Avishek Kumar] 轉載請註明出處 這部分主要討論數學相關的shell指令碼程式設計。 加法運算 新建一個檔案“Addition.sh”,輸入下面的內容並賦予其可執行的許可權。 [code language=”bash”] #!/bin/b

Linux Shell指令碼程式設計提高(12)

實際上Shell是一個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心,不僅如此,Shell有自己的程式語言用於對命令的編輯,它允許使用者編寫由shell命令組成的程式.Shel程式語言具有普通程式語言的很多特點,比如它也有迴圈結構和分支控制結構等,用這種程式語言編寫的Shell程式與其他應用程式具有同

Linux shell指令碼程式設計-將一行中的某個部分去重

一,背景。 今天遇到了一個使用場景,獲取檔案中每一行的某個屬性資料,然後將該屬性資料去重。 二,shell指令碼編寫。 bash 1 #!/bin/bash 2 for line in `cat test1|awk -F "|"

Linux Shell 指令碼程式設計(3)—Shell輸入與輸出

shell 輸入與輸出 提綱: echo read cat 管道 tee 檔案重定向

一文學會Linux-shell指令碼程式設計基礎

終於到shell 指令碼這章了,在以前筆者賣了好多關子說shell指令碼怎麼怎麼重要,確實shell指令碼在linux系統管理員的運維工作中非常非常重要。下面筆者就帶你正式進入shell指令碼的世界吧。 到現在為止,你明白什麼是shell指令碼嗎?如果明白最好了,不明白

Linux-Shell指令碼程式設計-學習-4-Shell程式設計-運算元字-加減乘除計算

對於任何一種程式語言都很重要的特性就是運算元字的能力,遺憾的是,對於shell指令碼來說,這個過程比較麻煩,在shell指令碼中有兩種途徑來進行數學運算操作。 1.expr 最開始的時候,shell提供了一個特別的命令來梳理數學表示式,expr允許在命令列上處理數學表示式

C# socket 程式設計之 accept() 函式返回解析

accept() 函式會返回一個新的套接字,這個新的套接字在伺服器端與客戶端進行通訊。 伺服器端的繫結監聽是一個套接字,與客戶端通訊的是另一個套接字(accept函式返回的套接字,注意這裡不是返回客戶端的套接字,返回的套接字是新建立在伺服器上的,與客戶端收發訊息用的) 下面這段程式碼,是

風火程式設計--flask檢視函式返回

flask檢視函式返回json資料 原始模式 data_json = json.dumps({"errcode": "0", "errms": "成功", "data": data}) return data_json, 200, {"Contant-Type": "Applic

Linux shell指令碼中執行命令結果賦給變數&&echo輸出變數是否包含換行符的問題

Linux shell指令碼中執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題 echo $ret 和 echo "$ret" 區別: 如果是echo $ret,輸出結果為一行,沒有換行符 如果是echo "$ret",輸出結果為多行,有換行符

linux之基礎shell指令碼程式設計3 函式陣列

本章主要寫shell有關函式陣列使用 七 函式 7.1 函式的介紹 函式function是由若干條shell命令組成的語句塊,實現程式碼重用和模組化程式設計。  它與shell程式形式上是相似的,不同的是它不是一個單獨的 程序,不能獨立執行,而是shel

Linux命令列與shell指令碼程式設計大全(二)

十一、處理使用者輸入 命令列引數 讀取引數: $0是程式名,$1是第一個引數,$2是第二個引數,以此類推,直到第9個引數$9。當引數個數超過10以後,需要在變數數字周圍加上花括號,如${10},如果輸入到命令列的引數是字串且含有空格,需要使用引號。 #! /bin/bash echo