1. 程式人生 > 實用技巧 >return echo 返回值,返回狀態碼 shell

return echo 返回值,返回狀態碼 shell

return 返回的是狀態碼, return不返回函式返回值可以在前面用 echo 返回函式返回值,return 返回指定函式退出狀態碼

echo 返回的是函式返回值,如果沒有使用return,則函式退出狀態碼是函式最後一條命令的退出狀態碼

return後面的語句將不再執行

#!/bin/bash

function fn(){
        a=$1
        b=$2
        c=$3
        echo bbbbbbbb
        return 233
}


ret=`fn`
echo $?
echo $ret

return返回的狀態碼不能賦予變數,只能用$?獲取,上圖方式可以同時獲取返回值和狀態碼,返回值賦予變數ret,狀態碼由$?獲取

就bash而言, return命令只能用在函式中,不能直接用在指令碼中,return返回值介於[0,255],超出從0重新計算

內建命令return用於從函式中返回, ..., return命令在函式中不是必須的,函式被呼叫時,函式內的命令執行完成後自然會返回到呼叫它的地方(一般是返回到主程式)。如果某函式中有return命令,執行到return時就返回。如果return在函式中不是最後一條命令,那麼return後面的其他命令不再執行

#!/bin/bash

function fn(){
        a=$1
        b=$2
        c=$3
        echo $a
        echo $b
        echo $c
        return 
256 } ret=$(fn aa bb cc) echo "ret="$ret ret=$(fn aa bb cc dd ee ff) echo "ret="$ret if [[ $ret =~ ee ]];then echo ret include ee else echo ret don\'t include ee fi ret=`fn` echo $? echo "ret="$ret ~

#!/bin/sh

function fn(){
        count=0
        for p in {1..3};do
                count
=$((count+p)) done return $count } ret=`fn` echo $? echo "ret="$ret

echo 通過輸出到標準輸出返回。因為子程序會繼承父程序的標準輸出,因此,子程序的輸出也就直接反應到父程序。

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

echo
echo "test 1"
vul=$(test 1)
echo $vul
~

沒有換行的原因是函式返回值由兩個echo語句輸出組成,賦給vul後作為整體輸出了