.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로 실행하면 말끔하다.