関数で「ソース」が有効に使用されますか?

関数で「ソース」が有効に使用されますか?

紹介のように:もしあれsecondary.sh

functionX(){
   ...
}

独自の機能を使用して次のように宣言しましたprimary.shsource secondary.sh

# primary.sh content
source secondary.sh

functionA(){
   ...
}
functionB(){
   ...
}

私の理解によると等しい前者のすべてのソースコードをコピーして後者に貼り付けます。だから:

# primary.sh content
functionX(){
   ...
}

functionA(){
   ...
}
functionB(){
   ...
}

何か間違ったことがあれば修正してください。

さらに、スクリプトファイルは現在のシェルで実行され、すべての変更(環境変数など)は現在のシェルに影響を与え、反映されます。今まで大丈夫です。もう一度間違った内容があれば訂正してください。

これで同じprimary.shスクリプトファイルですが、シナリオが異なる場合 - 次の場合:

source ${SPECIFIC_PATH}/secondary.sh

functionA(){
   ...
}
functionB(){
   ...
}

startPrimary(){
 ...
 SPECIFIC_PATH="/somepath"
 ...

}

source最上位にありますが、SPECIFIC_PATHまだ実行するように定義されていないため失敗します。

ただし、次のように変更された場合:

functionA(){
   ...
}
functionB(){
   ...
}

startPrimary(){
 ...
 SPECIFIC_PATH="/somepath"
 ...
 source ${SPECIFIC_PATH}/secondary.sh
}

SPECIFIC_PATH宣言されたので動作します。そして source必要に応じて行われます。

このシナリオはここで扱います。とても似ています:

しかし - 動作しますか?

私がこの質問をしたのは、次のことが心配です。

secondary.sh関数が宣言され、実際にコピー/貼り付けられている場合primary.sh- InUnix / Linuxシェルスクリプト他の関数内で関数を宣言することは有効ですか?私のポイントを理解してください。私は次のことが起こっていると仮定します。

functionA(){
   ...
}
functionB(){
   ...
}

startPrimary(){
 ...
 SPECIFIC_PATH="/somepath"
 ...
 functionX(){
   ...
 }
}

ベストアンサー1

おすすめ記事