Linux

呼叫下面聲明的函式

  • June 13, 2018

是否可以呼叫下面在 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 腳本?

引用自:https://unix.stackexchange.com/questions/449498