두줄짜리 아주 단순한 스크립트 문의

wizardis의 이미지

아래 find문은 확장자가 cSsh or cpp or mk인 놈을 뒤져서 libpvfr 라는 문자열이 있는 놈을 찾아주는 명령입니다.
find . \( -name '*.[cSsh]' -o -name '*.cpp' -o -name '*.mk' \) -print0 | xargs -0 grep -nr "libpvfr"

이놈을 단순히 shell script로 만들어서 써보려고 아래와 같이 shell script 명령을 작성했습니다. (bash)
그런데 특별한 에러는 없는데, 결과도 안나오는군요 ㅡ_ㅡ;;;;

$cat myfine
fnameDefault="-name '*.[cSsh]' -o -name '*.cpp' -o -name '*.mk'"
find . \( $fnameDefault \) -type f -print0 | xargs -0 grep -nr "$1"

이렇게 해놓고,
$myfine
$

아무런 결과 없이 그냥 프롬프트만 나오네요..
(그냥 find 명령문을 그대로 입력하면 조건에 맞는 결과물들이 나옴니다)

이거 가방끈이 짧다보니 시간만 겁니 죽이네요.. ㅠ_ㅠ;;;;;;;
무슨 차이가 있는걸까요???????

환상경의 이미지

$./myfile

또는

파일 첫줄에

#!/bin/sh

추가후에

$./myfile 해보세요

=================================
이제는 앞만 보며 전진해야만 할뿐.......
BLOG : http://khmirage.tistory.com/

==================================================================
정체된 일상.... 계기를 만들어야 하는데........
BLOG : http://khmirage.tistory.com/

wizardis의 이미지

네 답변 감사합니다.
사실 sh -v myfile 이런식으로 디버깅 할때 보니깐 동작하더라고요,..
그럼 이게 bash에서는 동작안되고 sh에서는 동작하는 셈인가요??

두 shell의 특성이 다른건가요?

octaphial의 이미지

그런 것과 상관없이 첫 줄에 #!/bin/(ba)sh 줄이 없으면 쉘 스크립트로 실행되지 않지요. 이른바 shebang이라고 하는데...

http://en.wikipedia.org/wiki/Shebang_(Unix)