104

たとえば、C / C ++でよく知られている前方宣言のようなもの、bashまたは少なくとも同様の(回避策)ものはありますか?

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

前方宣言がない場合、スクリプトを読みやすくするにはどうすればよいですか。それはかなり長く、最初のこれらの関数定義は、グローバル変数と混合されているため、スクリプトが見苦しく、読みにくく、理解しにくくなっています)? そのような場合のよく知られている/ベストプラクティスを学びたいと思っています。


例えば:

# something like forward declaration
function func

# execution of the function
func

# definition of func
function func
{
    echo 123
}
4

2 に答える 2

203

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

#!/bin/bash

main() {
    foo
    bar
    baz
}

foo() {
}

bar() {
}

baz() {
}

main "$@"

コードは上から下まで読むことができますが、実際には最後の行まで実行が開始されません。main()に渡すことで、通常どおりに"$@"コマンドライン引数$1、などにアクセスできます。$2

于 2012-11-27T16:19:21.743 に答える
32

私の bash スクリプトが大きくなりすぎると、インクルード メカニズムを使用します。

ファイルallMyFunctions:

foo() {
}

bar() {
}

baz() {
}

ファイルmain:

#!/bin/bash

. allMyfunctions

foo
bar
baz
于 2012-11-27T16:39:29.257 に答える