shell腳本返回值問(wèn)題的解決
如果學(xué)習(xí)過(guò)高級(jí)語(yǔ)言比如java和c語(yǔ)言等,此時(shí)你要是獲取一個(gè)函數(shù)的返回值,直接在函數(shù)里面寫(xiě)上return即可,然后在函數(shù)執(zhí)行時(shí)將返回結(jié)果賦值給某個(gè)變量即可。但是在shell腳本中限制較多,因此如果我們想實(shí)現(xiàn)這樣的功能的話,稍微困難一些,本人在實(shí)踐中做了一些該方面的實(shí)驗(yàn),并做筆記分享。
shell腳本的返回值可以使用return參數(shù),但是return只能返回整數(shù)類型的值。因此實(shí)現(xiàn)比較復(fù)雜的功能的話shell腳本可能不太友好。
比如下面這個(gè)例子:
#!/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
這個(gè)腳本實(shí)現(xiàn)的功能是在PATH環(huán)境變量中查找ls命令是否存在且可執(zhí)行,如果是,就返回0,否則就返回1。返回0表示為真,此時(shí)if語(yǔ)句判斷為真的話輸出yes,為0的話輸出no。
有時(shí)候希望實(shí)現(xiàn)的功能是返回一些其他類型的變量值,比如字符串等等,此時(shí)我們?cè)趕hell腳本中就不能再使用return關(guān)鍵字了,可以這么寫(xiě)。
#!/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
這也是一種實(shí)現(xiàn)獲取返回值結(jié)果的功能,還是挺好用的。但是如果你要是把if語(yǔ)句替換成case語(yǔ)句使用的話,那么函數(shù)中的echo語(yǔ)句和return語(yǔ)句返回的這個(gè)邏輯要明白的,和return不一樣的,比如:

到此這篇關(guān)于shell腳本返回值問(wèn)題的解決的文章就介紹到這了,更多相關(guān)shell腳本返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux下mysql如何自動(dòng)備份shell腳本
對(duì)任何一個(gè)已經(jīng)上線的網(wǎng)站站點(diǎn)來(lái)說(shuō),數(shù)據(jù)備份都是必須的。無(wú)論版本更新還是服務(wù)器遷移,備份數(shù)據(jù)的重要性不言而喻。人工備份數(shù)據(jù)的方式不單耗費(fèi)大量時(shí)間和精力,還灰常不專業(yè)。下面小編給大家分享linux下mysql自動(dòng)備份shell腳本,需要的朋友可以參考下2015-09-09
Shell中數(shù)組以及其相關(guān)操作的詳細(xì)實(shí)例
這篇文章主要給大家介紹了關(guān)于Shell中數(shù)組以及其相關(guān)操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Shell腳本中實(shí)現(xiàn)切換用戶并執(zhí)行命令操作
這篇文章主要介紹了Shell腳本中實(shí)現(xiàn)切換用戶并執(zhí)行命令操作,看了示例代碼就秒懂了,原來(lái)如此簡(jiǎn)單,需要的朋友可以參考下2014-12-12
shell Bash的數(shù)組與關(guān)聯(lián)數(shù)組的實(shí)現(xiàn)
本文主要介紹了shell Bash的數(shù)組與關(guān)聯(lián)數(shù)組的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
shell實(shí)現(xiàn)Fisher–Yates shuffle洗牌算法介紹
大家好,本篇文章主要講的是shell實(shí)現(xiàn)Fisher–Yates shuffle洗牌算法介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下哦2021-11-11

