首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Shell 腳本函數返回值限制:return 只能返回 0-255,大數需用 echo 輸出

     編輯:程式設計疑難解答

問題代碼

function a() {
    read -p "input: " value
    echo -n "doubling the value "
    return $[ value * 2 ]
}
a
echo "the new value is $?"

輸入 200 → 期望 400,實際輸出 144(400 % 256);輸入 310 → 期望 620,實際 108(620 % 256)。

原因

Shell 函數 `return` 只能返回 0-255 的退出碼**(8 位無符號整數)。超出範圍自動取模 256。

解決方法

  1. 用 `echo` 輸出結果,命令替換捕獲(推薦):
    function double() {
        read -p "input: " value
        echo $[ value * 2 ]  # 或 echo $((value * 2))
    }
    result=$(double)
    echo "the new value is $result"
  2. 用全域變量傳遞:
    function double() {
        read -p "input: " value
        DOUBLE_RESULT=$((value * 2))
    }
    double
    echo "the new value is $DOUBLE_RESULT"

補充

  • `$?` 僅用於檢查命令**成功/失敗**(0 成功,非 0 失敗),不適合傳遞業務數據。
  • Bash 整數運算用 `$((...))` 或 `let`,`$[...]` 為舊語法兼容。
  • 若需浮點運算,用 `bc` 或 `awk`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved