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 가능한 코드가 출력되는걸 알았어.
사실 이것도 "그냥" 마음에 안들어서 "뭔가 더 엘레강스한 방법 없나" 하면서 고민함
내가 회고하면서 써서 원인과 결과가 명확한데
실제론 최종 안에 도달하고 결정하기까지 별 쓸데없는 생각으로 시간낭비함. 내가 쉘스크립트 전문가가 아니라 그런듯
기능 검증이 테스트 밖에 없어서 필수불가결한 작업이긴 했지만
테스트 때문에 다른 기능 구현을 못했다고 생각하니 기분이 영...
zx같은거 쓸만하던데
나도 Bourne shell 말고 다른 대안은 없을까 찾아봤어. zx도 그 중 하나 하지만 쉘 근본은 bash/sh지... 라는 휴리스틱으로 그냥 스킵함 ㅋㅋ 본인은 zx 실제로 쓰는 중?
그냥 배포용 스크립트 zx로 짜서 써보는중 다른 사람들도 써야되는거 아니면 괜찮은듯
다른 사람도 읽어야 한다는 제약에 생기는 것도 zx 같은걸 쓰는걸 망설이게 하는 원인들 중 하나네
어차피 편하려고 쓴거고 그냥 js라 배우기어려운것도 아니라 쓸모는 있을듯
많이 복잡해지면 그냥 파이썬 같은걸로 짜는것도 방법임
이런거 걍 파이썬으로 하면 안되나? - dc App
파이선이 당신을 도웁니다