紹介のように:もしあれsecondary.sh
ば
functionX(){
...
}
独自の機能を使用して次のように宣言しましたprimary.sh
。source 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(){
...
}
}