2016-10-16 3 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 :

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

는 호출 ./script.sh java yarn

업데이트 : 실행 파일 이름과 다른, 당신은을 사용하여 이러한 차이를 처리 할 수 ​​있습니다 패키지 이름으로

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