728x90
반응형
Gitlab, Jenkins등에서 CI/CD로
ssh 명령 수행 스크립트 작성 시
$ 변수가 바인딩 안될경우
(for in do done, if then if등)
현상
- Gitlab에서 CI/CD script에서 sshpass로 원격서버에 1-5까지 반복문을 돌리면서 echo 로 값과 '-' 문자도 찍어주도록 명령을 날렸다.
- 원래 원하는 모양은 다음과 같다
sshpass … "for a in {1..5}; do echo $a && echo '-'; done; exit;"
1
-
2
-
3
-
4
-
5
- 그런데 이상하게 $a는 값이 찍히지 않는다. ${a}, {$a}, \"${a}\", '${a}', '$a', `$a` 해볼수있는 모든 경우의 수는 다해봤지만 실패했다.
처리
- single quote ( ' ) 가 답이었다. 문장 시작할때 double quote ( " )를 single quote로 바꿔주니 제대로 $변수가 바인딩 된다.
sshpass … 'for a in {1..5}; do echo $a && echo "-"; done; exit;'
아 좌괴감.. 하루종일 뭘한것인가..
728x90
반응형