bash
にそのようなことがありますか、たとえばC/C++でよく知られている前方宣言のような少なくとも類似した(回避策)がありますか?
または、たとえば、常に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
などに通常どおりアクセスできます。
私のbashスクリプトが大きくなりすぎた場合、インクルードメカニズムを使用します。
ファイルallMyFunctions
:
foo() {
}
bar() {
}
baz() {
}
ファイルmain
:
#!/bin/bash
. allMyfunctions
foo
bar
baz