0
請解釋一下如何正確使用unix shell函數。Unix shell函數,命令替換並退出
例如,我們有以下函數f和g:
f()
{
#do something
return $code
}
g()
{
print $something
}
我們可以在接下來的方式使用函數f:
f
if [[ $? -eq 0 ]]; then
#do 1
else
#do 2
fi
這個函數執行一些工作並退出了一些退出狀態。
我們可以分析這個退出狀態。
我們可以在接下來的方式使用函數g:
g
或
result=$(g)
if [[ $result = "something" ]]; then
#do something
fi
在第一種情況下,我們只是調用的函數。
在第二種情況下,我們使用命令替換將所有打印到stdout的文本分配給變量結果。
但如果有以下功能:
z()
{
user=$1
type=$2
if [[ $type = "customer" ]]; then
result=$(/somedir/someapp -u $user)
if [[ $result = "" ]]; then
#something goes wrong
#I do not want to continue
#I want to stop whole script
exit 1
else
print $result
fi
else
print "worker"
fi
}
我可以在接下來的方式使用函數z:
z
,如果出錯了,然後整個腳本將被停止。
但是,如果有人使用在命令替換該功能:
result=$(z)
在這種情況下,如果someapp返回空字符串腳本不會停止。
在函數中使用exit是否是不正確的方法?
不要退出功能,使用一個返回值並檢查值。 – Anders