2016-09-13 9 views
1

私は非常に大きなシェルスクリプトをbashで書いており、いくつかの関数を別のファイルにアウトソースしたいのです。bashシェルスクリプト関数のアウトソース

私はそれらをアウトソースすることができます。一度修正して改善し、複数のメインスクリプトで再利用できます。

これらの機能を現在の大きなスクリプトから単一の小さいものにコピーして貼り付け、後で大きいスクリプトにsource functions_versionCheck.shを使用して含めることはできますか?

+0

スクリプトを見なければわかりません。あなたは、あなたのスクリプトをリファクタリングするのがどれくらい簡単かは、主にその現在の品質**に依存していることがわかります。すべての機能が既に完全にスコープされており、グローバルな状態などでは機能していない場合それらを別の場所に移動するのは簡単かもしれません。しかし、すべてが緊密にバッシュスパゲッティのコードで絡んでいる場合、リファクタリングのための軽快な試みはそれを打ち破ります。 – GhostCat

答えて

3

はい、絶対にあります。私は大きなシェルスクリプトの自動化フレームワークと、これと同じ考え方に基づいて作業します。ここでは1つの基本的な例である:

AllFn.sh : 

function echoBold(){ 
echo "******************************************" 
echo "$1" 
echo "******************************************" 
} 

myscript.sh : 

source AllFn.sh 
echoBold "This is a bold message" 

はちょうどあなたは、できるだけ一般的なようAllFn.shスクリプトを作成し、あなたが渡す特定のパラメータのための一般的な機能をカスタマイズできるように、それはいくつかのプロパティファイルからプロパティを読み取る確認する必要があります。例えば

properties.txt: 
test1_host=hostname1 
test2_host=hostname2 

AllFn.sh : 
propfile=/home/$USER/properties.txt 
function printHost(){ 
    hostname=`grep ${1}_host $propfile | cut -d'=' -f2` 
    echo $hostname 
} 

myscript.sh : 
source AllFn.sh 
printHost test1 
printHost test2 
+0

完璧な例と説明!どうもありがとうございました! :) – user2966991

関連する問題