l도커 컴포즈로 돌려야 하는 테스트야


up 이후 exec으로 실행시켜야 하는 선행 작업들이 많아서 쉘스크립트들로 만들었는데

테스트 개수 늘어나면 어차피 나중에 리팩토링할테니 한 곳에 다 때려박지 말고

여러 파일로 분리시켜서 아예 SoC 흉내내자 생각하고 들이박았어.


근데 bash로 import/export 흉내내려니까...


source foo.sh

foo.sh에서 관리하는 내부 변수 (qq, ww) 들이 있고 그 내부 변수들을 가지고, 예를 들어, ${qq}:${ww} 를 expansion한 결과를 export 하고 싶어서

export YAH="qqblahblah:wwblahblah" 가 최종적으로 부모 쉘에서 실행되게 하려고 해.

근데 문제는 expansion이 어떻게 일어나냐는 건데... source 특징을 생각하면 아무리 생각해도 qq, ww가 부모 쉘에 드러나지 않고서는

export를 정상적으로 실행시킬 수가 없을 거 같아.


그런데 "뭔가 방법이 있을거야..."하면서 시간 날림

(지금 생각해보니 내부변수들을 스크립트 끝나기 전에 모조리 unset 하는 방법이 있다는 걸 발견했는데 관리하기 너무 번거로울 거 같아)


./foo.sh

부모 쉘 환경 못건듬


eval "$(./foo.sh)"

최종 안. foo.sh에서 eval할 수 있는 스크립트를 뱉게 만들기

foo.sh 안에서 변수 만든 다음, declare -p 하면 expansion까지 완료된, eval 가능한 코드가 출력되는걸 알았어.

사실 이것도 "그냥" 마음에 안들어서 "뭔가 더 엘레강스한 방법 없나" 하면서 고민함



내가 회고하면서 써서 원인과 결과가 명확한데

실제론 최종 안에 도달하고 결정하기까지 별 쓸데없는 생각으로 시간낭비함. 내가 쉘스크립트 전문가가 아니라 그런듯



기능 검증이 테스트 밖에 없어서 필수불가결한 작업이긴 했지만

테스트 때문에 다른 기능 구현을 못했다고 생각하니 기분이 영...