1. ホーム
  2. bash

[解決済み] BashやShellスクリプトで関数の前方宣言を行うには?

2022-11-27 13:38:56

質問

のようなものはあるのでしょうか? bash にあるのでしょうか、あるいは少なくとも、例えば C / C++ でよく知られている forward 宣言のような類似のもの (回避策) があるのでしょうか。

それとも、例えばそれは常に1パス(行と行の間)で実行されるため、そのようなものがありますか?

前方宣言がない場合、私のスクリプトを読みやすくするためにはどうしたらよいでしょうか。これはかなり長く、冒頭のこれらの関数定義は、グローバル変数と混在して、私のスクリプトを醜く、読みにくく/理解しにくくしています)?このような場合のよく知られた/ベストプラクティスを学ぶために質問しているのです。


たとえば

# something like forward declaration
function func

# execution of the function
func

# definition of func
function func
{
    echo 123
}

どのように解決するのですか?

いい質問ですね。私はほとんどのスクリプトでこのようなパターンを使用しています。

#!/bin/bash

main() {
    foo
    bar
    baz
}

foo() {
}

bar() {
}

baz() {
}

main "$@"

このコードは上から下へ読むことができますが、実際に実行を開始するのは最後の行からです。そこで "$@" を main() に渡すことで、コマンドライン引数にアクセスすることができます。 $1 , $2 などを、通常と同じように設定します。