Linux
呼叫下面聲明的函式
是否可以呼叫下面在 bash 中聲明的函式?
例子
if [ "$input" = "yes" ]; then YES_FUNCTION elif [ "$input" = "no" ]; then NO_FUNCTION else exit 0; fi YES_FUNCTION() { ..... ..... } NO_FUNCTION() { ..... ..... }
正如其他人所說,你不能那樣做。
但是如果你想把程式碼安排到一個文件中,使主程序在文件的頂部,而其他函式在下面定義,你可以通過一個單獨的
main
函式來實現。例如
#!/bin/sh main() { if [ "$1" = yes ]; then do_task_this else do_task_that fi } do_task_this() { ... } do_task_that() { ... } main "$@"; exit
當我們
main
在文件末尾呼叫時,所有函式都已定義。需要顯式傳遞"$@"
tomain
才能使腳本的命令行參數在函式中可見。與 main 呼叫在同一行的顯式
exit
不是強制性的,但可用於防止正在執行的腳本在腳本文件被修改時變得混亂。main
沒有它,shell 將在返回後嘗試繼續從腳本文件中讀取命令。(請參閱如何在執行之前閱讀整個 shell 腳本?)