鍍金池/ 問答/Linux/ 《linux程序設(shè)計(jì)4th》shell例程執(zhí)行流程

《linux程序設(shè)計(jì)4th》shell例程執(zhí)行流程

請(qǐng)問下下面shell腳本的流程:
1、函數(shù)內(nèi)為何要用$*不用$1?
2、函數(shù)內(nèi)的while true是怎么跳出的呢?
3、case的前兩個(gè)return,返回的是函數(shù)返回值嗎?
4、請(qǐng)解釋下執(zhí)行的流程,沒看懂。。。

 10 yes_or_no(){
 11     echo "Is your name $*"
 12     while true
 13     do
 14         echo  "Enter yes or no"
 15         read x
 16         case $x in
 17             y | yes)    return 0;;
 18             n | no )    return 1;;
 19             *      )    echo "Enter yes or no"
 20         esac
 21     done
 22 }
 23 
 24 echo "Original parameters are $*"
 25 if yes_or_no "$1"
 26 then
 27     echo "Hi $1, nice name"
 28 else
 29     echo "Never mind"
 30 fi
 31 exit 0
回答
編輯回答
陪妳哭

1.函數(shù)里面的是傳給函數(shù)的參數(shù),即調(diào)用函數(shù)時(shí)后面跟的那一堆東西,對(duì)于這個(gè)腳本,函數(shù)里面的$* 即為25行的$1
2.只有輸入yes/no 的時(shí)候才會(huì)返回,才跳出函數(shù)
3.是函數(shù)執(zhí)行完后的狀態(tài)值,0表示正確,非0表示錯(cuò)誤。

2017年3月17日 19:27