return echo 返回值,返回狀態碼 shell
阿新 • • 發佈:2020-10-09
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後作為整體輸出了