2016-10-16 4 views
0

私は、既存のパッケージのインストールに時間を節約するためにcliパッケージのインストールを検出するためにインラインチェックを行っていますが、それは長時間のリストで読みにくいということがわかりました。例えばcliのインストールを検出する機能

which -s redis-cli || brew install redis 
which -s java || brew cask install java 
which -s yarn || npm install -g yarn 

が、それは見栄えにする任意の関数がありますか?例:

function npmInstall(name) { 
    if (which -s name) { 
     return; 
    } 

    npm install -g name; 
} 

ありがとうございます!

答えて

1

クライアントパッケージをパラメータとして渡すことができます。

例、script.sh./script.sh java yarn

で呼び出さ

for cli in [email protected]; do 
    which "$cli" || npm install -g "$cli" 
done 

更新:パッケージ名は、実行可能名と異なっているよう

、あなたが使用して、これらの違いを処理することができますBash連想配列。スクリプトにパラメータとして渡されたパッケージ名は、そのパッケージの配列に値が見つからない場合にのみ使用されます。

for pkg in [email protected]; do 
    declare -A exe 
    exe=([redis]="redis-cli" [otherpkg]="otherpkg-cli") 
    package=${exe[$pkg]:-$pkg} 
    which "$package" || npm install -g "$package" 
done 
関連する問題