2012-12-08 2 views
4
와 매개 변수를 지원하지 않습니다

가능한 중복 :
how to use multiple arguments with a shebang (i.e. #!)?Hashbang 인수

가 어떻게이 #! 문이 인수와 PARAM을 수용 할 수 있습니까? 평소와 같이 공간에서 분리하는 대신 하나의 매개 변수로 모든 것을 함께 묶는 것 같습니다.

이 인위적인 예를 보자

$ cat /tmp/echo 
#!/bin/echo -n 
$ /tmp/echo 
/tmp/echo$ 

잘 작동하고 마지막에 새 줄없이 파일 이름을 출력합니다. 그러나이 하나 :

$ cat /tmp/echo 
#!/bin/echo -n hi 
$ /tmp/echo 
-n hi /tmp/echo 
$ 

-n arg를 죽입니다.

내가 할 수있는 해킹은 내가 원하는 매개 변수로 원하는 첫 번째 스크립트를 실행하는 다른 쉘 스크립트를 만드는 것입니다.하지만 내가 필요로하지 않으면 추가 종속성을 추가하지 않을 것입니다.

+0

나를 위해, 첫 번째 예제는 당신처럼 작동하고 두 번째 작품은 의도 한대로 작동합니다 (Mac OS X Mountain Lion, bash 3.2.48 (1)) –

+0

Oh great. 그것은 OS 의존적입니까? CentOS 릴리스 5.2를 사용하고 있습니다. –

답변

2

분명히 POSIX 표준이 없지만 많은 (아마도 대부분의) * nix 시스템에서는 shabang에서 호출 된 프로그램에 하나의 인수 만 보낼 수 있습니다. 그러므로 #!/bin/echo -n hi을 사용하는 것은 실질적으로 /bin/echo "-n hi" /path/to/script을 실행하는 것과 같습니다.

자세한 설명은 this SO answer을 참조하십시오.