E_NOPARAM=10?#?錯誤碼1:沒有參數傳給腳本?
E_BADPARAM=20?#?錯誤碼2:傳給腳本的盤子數不合法?
Moves=0?#?保存移動次數的全局變量.
dohanoi()?{?#?遞歸函數?
case?$1?in
0)
;;
*)
dohanoi?"$(($1-1))"?$2?$4?$3
echo?move?$2?"-->"?$3
let?"Moves?+=?1"?#?這兒修改了原腳本.
dohanoi?"$(($1-1))"?$4?$3?$2
;;
esac
}
case?$#?in
1)
case?$(($1>0))?in?#?至少要有壹個盤子.
1)
dohanoi?$1?1?3?2
echo?"Total?moves?=?$Moves"
exit?0;
;;
*)
echo?"$0:?illegal?value?for?number?of?disks";
exit?$E_BADPARAM;
;;
esac
;;
*)
echo?"usage:?$0?N"
echo?"?Where?\"N\"?is?the?number?of?disks."
exit?$E_NOPARAM;
;;
esac
根據《高級Bash Shell腳本編程指南.pdf》上的示例改寫。