본문 바로가기

운영체제 & Linux/쉘 스크립트

shellscript 배열 받아서 반복하기 (comma, 쉼표 기준) linux, unix, ubuntu, bash

구글에 검색해서 나오는 예제는 다 아래와 같다

var1=("a" "b" "c")

for var in ${var1}
do
  echo $n > test.txt
done

 

근데 나는 ["a","b","c"] 이렇게 생긴 배열을 받아서 공백이 아닌 comma 기준으로 반복문을 돌려야됐다.

var1=["a","b","c"]
for var in ${var1//,/ }; do
  echo $var
done

이렇게 하면 ,를 기준으로 돌아진다 하지만 맨처음에 [a, 마직막에 c] 이런식으로 나오기 때문에 [랑 ]을 제거 한후 사용해야된다.

 

근데 저렇게 선언한건 잘되는데 외부에서 받아온 변수를 돌리려니까 안됐다. 그래서 아래 같이 바꾸니 잘 돌아갔다

for var in {$var1}; do
  echo $var
done

나는 젠킨스를 돌릴 때 일치하는 분기를 하기 위해 체크하는거라서 굳이 [ ]를 제거 할 필요 없이 내가 원하는 문자열이 포함되는지 체크했다. 아래는 젠킨스 Exec command 이다. echo 부분에 내가 원하는 분기를 넣으면 된다.

  for n in {$PR_LABELS_NAME}
  do
    if [[ "$n" == *admin* ]]
    then
      echo $n > admin.txt
    elif [[ "$n" == *web* ]]
    then
      echo $n > web.txt
    elif [[ "$n" == *mobile* ]]
    then
      echo $n > mobile.txt
    elif [[ "$n" == *pc* ]]
    then
      echo $n > pc.txt
    fi
  done

 

 

- 오타가 있을 수 있습니다. 오타 발견이나 잘안되는게 있으면 댓글 남겨주세요.