หลายโปรแกรมใช้ประโยชน์จากเทคนิคนี้เมื่อมีการปฏิบัติการเพียงครั้งเดียวที่เปลี่ยนพฤติกรรมตามวิธีการใช้งาน
โดยทั่วไปจะมีโครงสร้างภายในโปรแกรมที่เรียกว่าคำสั่ง 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-)