C語言中文網 目錄
首頁 > Shell腳本 閱讀:8,409

Shell $?:獲取函數返回值或者上一個命令的退出狀態

$? 是一個特殊變量,用來獲取上一個命令的退出狀態,或者上一個函數的返回值。

所謂退出狀態,就是上一個命令執行后的返回結果。退出狀態是一個數字,一般情況下,大部分命令執行成功會返回 0,失敗返回 1,這和C語言的 main() 函數是類似的。

不過,也有一些命令返回其他值,表示不同類型的錯誤。

1) $? 獲取上一個命令的退出狀態

我們使用兩個腳本文件來演示。

先編寫下面的代碼,并保存為 a.sh:
#!/bin/bash


if [ $1 == 100 ]
then
   return 0  #參數正確,返回0
else
   return 1  #參數錯誤,返回1
fi
再編寫下面的代碼,并保存為 b.sh:
#!/bin/bash

echo $?
先運行 a.sh,傳遞參數 100,然后再運行 b.sh,結果如下:

$ . ./a.sh 100
$ . ./b.sh
0

如果將傳遞給 a.sh 的參數改為 89,b.sh 的運行結果就不同了:

$ . ./a.sh 89
$ . ./b.sh
1

2) $? 獲取函數的返回值

編寫下面的代碼,并保存為 test.sh:
#!/bin/bash

#得到兩個數相加的和
function add(){
    return `expr $1 + $2`
}

add 23 50  #調用函數
echo $?  #獲取函數返回值
運行 test.sh:

$ . ./test.sh
73

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo