如果學(xué)習(xí)過高級語言比如java和c語言等,此時你要是獲取一個函數(shù)的返回值,直接在函數(shù)里面寫上return即可,然后在函數(shù)執(zhí)行時將返回結(jié)果賦值給某個變量即可。但是在shell腳本中限制較多,因此如果我們想實現(xiàn)這樣的功能的話,稍微困難一些,本人在實踐中做了一些該方面的實驗,并做筆記分享。
shell腳本的返回值可以使用return參數(shù),但是return只能返回整數(shù)類型的值。因此實現(xiàn)比較復(fù)雜的功能的話shell腳本可能不太友好。
比如下面這個例子:
#!/bin/bash
function in_path(){
cmd=$1
path=$2
oldIFS=$IFS
IFS=":"
retval=1
for directory in $path
do
if [ -x $directory/$cmd ];then
return 0
fi
done
IFS=$oldIFS
return 1
}
in_path ls $PATH
if [ $? -eq 0 ];then
echo "yes"
else
echo "no"
fi
這個腳本實現(xiàn)的功能是在PATH環(huán)境變量中查找ls命令是否存在且可執(zhí)行,如果是,就返回0,否則就返回1。返回0表示為真,此時if語句判斷為真的話輸出yes,為0的話輸出no。
有時候希望實現(xiàn)的功能是返回一些其他類型的變量值,比如字符串等等,此時我們在shell腳本中就不能再使用return關(guān)鍵字了,可以這么寫。
#!/bin/bash
function in_path(){
cmd=$1
path=$2
oldIFS=$IFS
IFS=":"
retval=1
for directory in $path
do
if [ -x $directory/$cmd ];then
echo yes
fi
done
IFS=$oldIFS
echo no
}
aa=$(in_path $1 $PATH)
if [[ $aa =~ "yes" ]];then
echo "the path has this bianliang"
else
echo "no no no"
fi
這也是一種實現(xiàn)獲取返回值結(jié)果的功能,還是挺好用的。但是如果你要是把if語句替換成case語句使用的話,那么函數(shù)中的echo語句和return語句返回的這個邏輯要明白的,和return不一樣的,比如:
到此這篇關(guān)于shell腳本返回值問題的解決的文章就介紹到這了,更多相關(guān)shell腳本返回值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Shell中關(guān)于處理方法返回值問題詳解
- Linux Shell函數(shù)返回值
- Shell中函數(shù)返回值超出問題
- linux shell 自定義函數(shù)方法(定義、返回值、變量作用域)
- shell腳本中執(zhí)行python腳本并接收其返回值的例子
- linux shell自定義函數(shù)(定義、返回值、變量作用域)介紹