조건 매개변수

조건 매개변수

스크립트의 특정 줄을 실행하기 위해 bash 스크립트를 시작할 때 매개 변수를 전달하는 방법

예를 들어( createfile.sh):

#!/bin/bash

export CLIENT1_DIR="<path1>"
export CLIENT2_DIR="<path2>"
chef-solo -c solo.rb -j client1.json
chef-solo -c solo.rb -j client2.json

그 다음에

$ ./createfile.sh client1

특정 라인 만 client1실행되어야 하며 " client2특정 라인만 실행되어야 합니다 client2"로 대체됩니다.

답변1

이에 대한 많은 해결책이 있습니다. 이것은:

#!/bin/bash

client="$1"

case "$client" in
    "client1") export CLIENT1_DIR="<path1>" ;;
    "client2") export CLIENT2_DIR="<path2>" ;;
    *)  printf 'Invalid client argument: %s\n' "$client" >&2
        exit 1 ;;
esac

chef-solo -c solo.rb -j "$client".json

client변수는 첫 번째 명령줄 인수의 값을 가져옵니다.

명령문은 case값을 설정하거나 기반으로 합니다 CLIENT1_DIR( CLIENT2_DIR또는 유효하지 않은 값이 사용되는 경우 오류 메시지와 함께 종료됩니다).

그런 다음 chef-solo명령줄에 제공된 내용에 해당하는 JSON 파일을 사용하여 호출합니다.

답변2

함수에는 다음 줄이 있습니다.

#!/bin/bash
clientOne(){
    ## client1 specific lines
    echo "one"
}
clientTwo(){
    ## client2 specific lines
    echo "two"
}

case "$1" in
    "client1")
        clientOne
        ;;
    "client2")
        clientTwo
        ;;
    *)
        echo "Wrong option" >&2
        ;;
esac

## Common lines
echo foo

관련 정보