많은 프로그램이 실행 방법에 따라 동작을 변경하는 단일 실행 파일이있는 경우이 기술을 사용합니다.
일반적으로 프로그램 내에 case / switch 문이라고하는 구조가 있는데,이 파일에는 실행 파일이 호출 된 이름을 결정한 다음 해당 실행 파일 이름에 적절한 기능을 호출합니다. 이 이름은 일반적으로 프로그램이받는 첫 번째 인수입니다. 예를 들어 다음과 같이 C
쓸 때
int main(int argc, char** argv)
argv[0]
호출 된 실행 파일의 이름을 포함합니다. 최소한 이것은 모든 셸의 표준 동작이며 인수를 사용하는 모든 실행 파일이이를 인식해야합니다.
Perl의 예
여기 Perl에 정리 된 기술이 있습니다.
실제 스크립트는 다음과 같습니다 mycmd.pl
.
#!/usr/bin/perl
use feature ':5.10';
(my $arg = $0) =~ s#./##;
my $msg = "I was called as: ";
given ($arg) {
$msg .= $arg when 'ls';
$msg .= $arg when 'find';
$msg .= $arg when 'pwd';
default { $msg = "Error: I don't know who I am 8-)"; }
}
say $msg;
exit 0;
파일 시스템 설정은 다음과 같습니다.
$ ls -l
total 4
lrwxrwxrwx 1 saml saml 8 May 24 20:49 find -> mycmd.pl
lrwxrwxrwx 1 saml saml 8 May 24 20:34 ls -> mycmd.pl
-rwxrwxr-x 1 saml saml 275 May 24 20:49 mycmd.pl
lrwxrwxrwx 1 saml saml 8 May 24 20:49 pwd -> mycmd.pl
이제 명령을 실행할 때
$ ./find
I was called as: find
$ ./ls
I was called as: ls
$ ./pwd
I was called as: pwd
$ ./mycmd.pl
Error: I don't know who I am 8-)