스크립트의 특정 줄을 실행하기 위해 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