single quote에서 변수를 써야 하는 상황이 생길 수 있다.

예를 들어 curl을 이용해서 HTTP POST body를 사용해야 하는 상황입니다. (elasticsearch에 alias 추가 작업)


curl -s -XPOST http://${host}:9200/_aliases -d '{ "actions" : [ { "add" : { "index" : "${NEW_INDEX}", "alias" : "${ALIAS}" } }]}'


그냥 실행하면, "${NEW_INDEX}"와 ${ALIAS}를 읽지 못해서 에러가 발생한다.


그럴 때는 single quote와 double quote를 변수 앞에, dobule quote와 single quote를 변수 뒤에 붙여 쓴다.



echo 'aaaaa    $NEW_INDEX       bbbbbb'

echo 'aaaaa    '"$NEW_INDEX"'       bbbbbb'


결과 

aaaaa    $NEW_INDEX       bbbbbb

aaaaa    sns_profile       bbbbbb



맨 처음 es 요청하는 것은 다음과 같이 사용하면 잘 동작한다.


curl -s -XPOST http://${host}:9200/_aliases -d '{ "actions" : [ { "add" : { "index" : '"\"${NEW_INDEX}\""', "alias" : '"\"${ALIAS}\""' } }]}'





Posted by '김용환'
,