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
~

 

如果沒有引號, shell會將變量使用 IFS 分割, 將分割后的參數列表傳遞給 echo, IFS 默認為空格( 空格, tab, \n )

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM