2014-12-17 1 views
-2

안녕하세요.쉘 스크립트를 사용하여 동적 배열을 만들고이를 기반으로 프로세스를 트리거하십시오.

대소 문자를 다음과 같이 지정한 스크립트를 실행해야합니다. 예/빌드 .sh 체크 아웃 빌드 빌드

a, b, c, d, e, f는 인스턴스의 이름이고 checkout, build, deploy는 프로세스의 이름입니다.

그래서 어떤 프로세스로도 인스턴스를 실행할 수 있습니다.

이제 어떻게해야 aruguments를 분리하고 쉘 스크립트에서 사용할 수 있습니까?

인수가 비슷한 유형 인 경우 배열에서 사용할 수 있으며 for 루프 및 스위치 대/소문자를 사용하여 각 인수를 검사 할 수 있습니다. 내 경우에는 여기에

, 내가 인수를 분리하고 a와 b에 대한

  1. 체크 아웃처럼 실행해야한다. C
  2. 위한
  3. 빌드, B 어레이를 형성한다

    1. 유사한 동적 배열 및 작업 수를 형성

    필요 D 및 E의 배치 및 그 결제 시작을 검출한다 이 실행 중입니다.

  4. 비슷한 배열을 형성해야하며 빌드 프로세스를 감지하고 실행을 시작해야합니다.
  5. d와 e는 배열을 형성하고 배포 프로세스를 실행해야합니다.

다른 구현 방법이있을 경우 나에게 제안하고 해결책을 제공하십시오.

답변

0

구식 POSIX 쉘 : 대신 bash는 배열을 사용해야하는 경우

#!/bin/sh 

# Note: Inside the functions, [email protected], $1 etc. refer to the arguments to the function, 
# whereas outside they refer to the arguments to the whole script.  
foo() { 
    echo foo [email protected] 
} 

bar() { 
    echo bar $3 $2 $1 
} 

PARAMS= 

while [ $# -gt 0 ]; do # while there are arguments 
    case "$1" in   # check if the front argument is a command 
    foo)     # if so, run it with the previously cached parameters 
     foo $PARAMS  # (see below) 
     PARAMS= 
     ;; 
    bar) 
     bar $PARAMS 
     PARAMS= 
     ;; 
    *)     # if it is not a command, cache the parameter in the 
     PARAMS+=" $1"  # $PARAMS variable 
     ;; 
    esac 

    shift     # shift the arguments back; what was $2 is now $1 
done 

./foo.sh 1 2 foo 3 4 5 bar 불려가,이

foo 1 2 
bar 5 4 3 

제공, 그 구문은

PARAMS=()  # instead of PARAMS= 
PARAMS+=("$1") # instead of PARAMS+=" $1" 
${PARAMS[0]} # instead of $1, analogous for $2, $3 etc. 
입니다

나머지는 동일하게 유지되며 매개 변수가있는 함수 이외의 다른 것을 호출 할 수 있습니다 정렬.

+0

하지만 아래 출력을 얻을 필요가 있습니다. 1 2 arary에서 ==> foo를 시작해야합니다 ..... 3 4 5 배열로 ==> 바를 시작해야합니다 ..... 제발 도와주세요 – Murthy

+0

... 이미 어떻게 작성 했습니까? 너 그렇게 할 수있어. 어느 부분에 문제가 있습니까? – Wintermute

관련 문제