The UNIX and Linux Forums  
Hello and Welcome-tól az Egyesült Államokat, hogy az UNIX és Linux Forums? Köszönjük, hogy meglátogatta és csatlakozik Globális Közösség.

Go Back   A UNIX és Linux Forums > Top Fórumok > A UNIX a dummies Kérdések és válaszok > Válaszok a gyakori kérdésekre > Tippek és oktatóanyagok
.
google unix.com



Tippek és oktatóanyagok Hasznos cikkek a felhasználóink számára.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Learning Oracle ADF: A Beginner's Story iBot Oracle frissítések (RSS) 0 04-06-2008 05:10 AM
CEP és a Story a halak iBot Complex Event Processing RSS hírek 0 12-17-2007 05:50 AM
Bangkok Post cikk: A történet mögött, a Linux operációs rendszer Neo Hírek, linkek, rendezvények, Announcements 0 04-05-2003 09:05 AM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 03-31-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Helyszín: Ashburn, Virginia
Hozzászólások: 9.119
Az egész történetet a #! / usr / bin / ksh

Bemutatkozás

Eredetileg, csak volt egy shell Unix. Amikor szaladt a parancsot a héj igyekeznek élni az egyik exec () rendszer kéri azt. Ez a parancs egy végrehajtható, a exec sikerül, és a parancs lenne. Ha az exec () sikertelen, a héj nem adja fel, hanem azt próbálja meg értelmezni a parancs fájlt, mintha egy shell szkriptet. Ez működik jól, amíg csak egy shell a rendszerben. De mi van akkor, ha ön használ egy borító, mint az interaktív és szeretnénk futtatni egy szkriptet írni, egy fiktív nyelvét?

Ez az, ahol a #! trükk Bejön ötlete segítségével # képviseletére hozzászólhass származik csh és gyorsan hozzá a Bourne héj. Most minden kagyló tudja, hogy figyelmen kívül hagyja dolgok után #. Így tudunk hozzáadni vezető vonal valami hasonló "#! / Usr / bin / ksh". A borító is ezt a vonalat csak egy megjegyzés. De ha a rendszermag megpróbálja végrehajtani a fájlt, ezt a vonalat, akkor a megadott exec tolmács és átadni a forgatókönyvet is. Így vált shell szkriptek futtatható csinos, mint a tényleges futtatható. Most, amikor a héj próbál futtatni egy shell scriptet, hogy sikerül.

Mi van, ha hagyjuk ki a #! sor? Nos, a kernel exec sikertelen lesz. Az átlagos shell majd megpróbálja futtatni a szkriptet is. Néhány shells megpróbálja ellenőrizni a forgatókönyvet, hogy megpróbálja kitalálni a nyelvet. Ez nem jó. Lehet, hogy fut, mint a KSH interaktív héj és írásban KSH scripts. Ha később váltani a bash egy interaktív héj néhány szkriptjeidben továbbra is fut, míg mások nem. Ugyancsak a sor egy komment hogy fontos, hogy clue programozó, aki megvizsgálja a szkriptet értem. Tudván, milyen nyelven a szerző próbál használata nagy segítséget.

Bár már használta a "fiktív", valójában ezt a technikát lehet használni a sok program, hogy nem készültek. Itt van egy "forgatókönyvet" a kijelző a többsoros üzenet:
Kód:
#! /usr/bin/cat
Line 1
Line 2 
Line 3
Ez jelenik meg, hogy a "#! / Usr / bin / cat" sor, de más, mint, hogy működik jól.

Elhaladunk az érvelés

A lépés egyetlen érvet, mint ez:
#! / usr / local / bin /perl -w
De általában, ha a korlátozás az egy érv. A legtöbb rendszeren, a sort: "#! / Néhány tolmács-a-b" fog eredményezni "-a-b" átadták az egyetlen érv. Ugyanakkor az egyetlen érvet nem korlátozódik kezdve egy kötőjel. Meg tudjuk javítani az üzenetünk script:
Kód:
#! /usr/bin/sed 1d
Line 1
Line 2 
Line 3
Példa

Tegyük fel, hogy mind ez együtt egy példát. Itt van egy perl parancsfájlt, hogy én is fel perlargs:
Kód:
#! /usr/local/bin/perl -w

#! /usr/local/bin/perl -w
print "script name is ", $0, "\n";
while (@ARGV) {
        $ARGV = shift @ARGV;
        print "argument ", $i++,  " is ", $ARGV, "\n";
}

system "ps -f -ww";

A-w kéri perl kérdés figyelmeztető üzeneteket. A szkript csak megjeleníti az érveit, majd végig a ps paranccsal. Amikor fut, én kapjuk:
Kód:
$ ./perlargs one two three
Name "main::i" used only once: possible typo at ./perlargs line 10.
script name is ./perlargs
argument 0 is one
argument 1 is two
argument 2 is three
                 UID        PID   PPID    STIME TTY     TIME CMD
                 perderabo   69      1 17:47:28 n01  0:00.24 /bin/ksh -l
                 perderabo  201     69 18:28:22 n01  0:00.03 /usr/local/bin/perl -w ./perlargs one two three
                 perderabo 2055    201 18:28:22 n01  0:00.01 ps -f -ww
$
Figyeljük meg, hogy az perl folyamatot hívják az 5 érveit. 2. Az az érv is a neve a forgatókönyvet. Rajtunk múlik, hogy a perl folyamat, hogy az utolsó 3 érvek alapján, mint a paraméterek listája látta a forgatókönyvet. Is rájönnek a kernel kezdett a perl folyamatban. Azután, hogy a perl megnyitni a forgatókönyvet, és olvassa el és hajt végre minden egyes sorban. Ez az oka annak, hogy parancsfájlokat kell olvasható. Nem tud végrehajtani egy nem olvasható forgatókönyvet.

Következtetés

Ez elég információ, hogy megértse, mi történik azokkal a #! sor. Az alábbi helyek, majd adjunk hozzá részletek a különböző aspektusai a folyamatot.
 

Könyvjelzõk

Címkék
perl, perl műszak, kocsma, váltás, elterelési perl

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 05:34 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0