늘모자란, 개발 :: regex not working in shell

늘모자란, 개발

이걸 어떻게 설명해야할지 모르겠는데 나는 shell에서 사용하는건 다 똑같은 bash 인줄 알았다.

.sh를 실행할때 보통 이렇게 실행한다고 가정해보자. 권한을 적당히 주고 다음과 같이 실행하는게 일반적이다.

./aaaaa.sh


실행에 있어서는 별 문제가 없다.
그런데 얼마전에 쉘 스크립트를 짜는데, 

mysql query 결과를 command line 으로 실행해서 뽑고, 거기서 특정 문구를 regex로 처리해 변수로 쓰려고 시도 했다. 다음과 같은 모양이다
쉘 스크립트를 잘 몰라서 매끄럽진 않으니 참고만;

myvar=$(mysql -u ... -p ... -e "QUERY")
a=$(print %q " $myvar)
myvar2=$(echo $a | sed -rn 'REGEX....')
echo $myvar2


뭐 이런느낌으로 작성했다. 
그런데 아무리 돌려도 나오질 않는다. 정말 짜증나 미치려고 하고 있던 와중에 shell에서 쓰는 regex는 posix라고 부르는 문법을 사용한다.
단순 execute 가 아니라... bash 로 따로 실행을 해야 돌아간다고 한다.

요컨데

/bin/bash aaaaa.sh


로 실행하면 결과값이 다르다. 확장 익스텐션이랑 같이 실행되는 느낌이라고 할까..
간단한 작업들만 실행하게 하는 용도로 사용하다보니 쉘 스크립트도 이런게 있는줄은 처음 알았다. 어쨌든 bash로 실행하면 말끔하다.
2017/11/24 17:24 2017/11/24 17:24