exec - Invoke subprocess (es)
Buod
exec? switch ? arg ? arg … ?
Paglalarawan
Ang utos na ito ay tinatrato ang mga argumento nito bilang detalye ng isa o higit pang mga subprocesses na isasagawa. Ang mga argumento ay ang form ng isang karaniwang pipeline shell kung saan ang bawat isa arg nagiging isang salita ng isang utos, at ang bawat natatanging utos ay nagiging subprocess.
Kung ang unang argumento saexec Magsimula sa- pagkatapos ay itinuturing na mga command-line switch at hindi bahagi ng pagtutukoy ng tubo. Ang kasalukuyang mga switch ay kasalukuyang sinusuportahan:
-keepnewline
Pinapanatili ang isang trailing newline sa output ng tubo. Karaniwan ang isang trailing newline ay tatanggalin.
--
Sinuri ang dulo ng mga switch. Ang pagtatalo na sumusunod sa isang ito ay ituturing bilang unang arg kahit na ito ay nagsisimula sa isang-.
Kung ang arg (o pares ng arg 's) ay may isa sa mga form na inilarawan sa ibaba at pagkatapos ay ginagamit ito ngexec upang kontrolin ang daloy ng input at output sa subprocess (es). Ang mga naturang argumento ay hindi mapapasa sa subprocess (es). Sa mga form tulad ng `` < fileName '' fileName maaaring maging alinman sa isang hiwalay na argumento mula sa `` <'' o sa parehong argument na walang puwang sa pagitan (ibig sabihin ay `` < fileName '').
|
Ang mga hiwalay na utos sa pipeline. Ang karaniwang output ng naunang utos ay piped sa standard na input ng susunod na command.
|&
Ang mga hiwalay na utos sa pipeline. Ang parehong karaniwang output at karaniwang error ng naunang utos ay piped sa karaniwang input ng susunod na command. Ang form na ito ng pag-redirect ay binabawasan ang mga form tulad ng 2> at> &.
< fileName
Ang file na pinangalanan ng fileName ay binuksan at ginamit bilang pamantayang input para sa unang command sa pipeline.
<@ fileId
FileId ay dapat na identifier para sa isang bukas na file, tulad ng halaga ng pagbalik mula sa isang nakaraang tawag sabukas. Ginagamit ito bilang karaniwang input para sa unang command sa pipeline. FileId ay dapat na binuksan para sa pagbabasa.
<< halaga
Halaga ay ipinasa sa unang command bilang karaniwang pamantayan nito.
> fileName
Ang karaniwang output mula sa huling command ay nai-redirect sa file na pinangalanan fileName , pinalitan ang mga naunang nilalaman nito.
2> fileName
Ang karaniwang error mula sa lahat ng mga utos sa pipeline ay nai-redirect sa file na pinangalanan fileName , pinalitan ang mga naunang nilalaman nito.
>& fileName
Parehong karaniwang output mula sa huling command at karaniwang error mula sa lahat ng mga command ay nai-redirect sa file na pinangalanan fileName , pinalitan ang mga naunang nilalaman nito.
>> fileName
Ang karaniwang output mula sa huling command ay nai-redirect sa file na pinangalanan fileName , naglalagay dito sa halip na i-overwrite ito.
2>> fileName
Ang karaniwang error mula sa lahat ng mga utos sa pipeline ay nai-redirect sa file na pinangalanan fileName , naglalagay dito sa halip na i-overwrite ito.
>>& fileName
Parehong karaniwang output mula sa huling command at karaniwang error mula sa lahat ng mga command ay nai-redirect sa file na pinangalanan fileName , naglalagay dito sa halip na i-overwrite ito.
>@ fileId
FileId ay dapat na identifier para sa isang bukas na file, tulad ng halaga ng pagbalik mula sa isang nakaraang tawag sabukas. Ang karaniwang output mula sa huling utos ay nai-redirect sa fileId 's file, na dapat na binuksan para sa pagsulat.
2>@ fileId
FileId ay dapat na identifier para sa isang bukas na file, tulad ng halaga ng pagbalik mula sa isang nakaraang tawag sabukas. Ang karaniwang error mula sa lahat ng mga utos sa pipeline ay na-redirect sa fileId 's file. Ang file ay dapat na binuksan para sa pagsusulat.
>&@ fileId
FileId ay dapat na identifier para sa isang bukas na file, tulad ng halaga ng pagbalik mula sa isang nakaraang tawag sabukas. Ang parehong karaniwang output mula sa huling utos at karaniwang error mula sa lahat ng mga utos ay nai-redirect sa fileId 's file. Ang file ay dapat na binuksan para sa pagsusulat.
Kung ang karaniwang output ay hindi na-redirect pagkatapos ay angexec Ang command ay nagbabalik ng karaniwang output mula sa huling command sa pipeline. Kung ang alinman sa mga utos sa pipeline exit ay abnormally o pinatay o suspendido, pagkataposexec ay magbabalik ng isang error at ang mensahe ng error ay magsasama ng output ng tubo na sinusundan ng mga mensahe ng error na naglalarawan sa mga hindi normal na pagtatapos; angerrorCode Ang variable ay maglalaman ng karagdagang impormasyon tungkol sa huling abnormal na pagtatapos na nakatagpo. Kung ang alinman sa mga utos ay nagsusulat sa karaniwang standard na error na file at ang karaniwang error ay hindi na-redirect, pagkataposexec ay magbabalik ng isang error; ang mensahe ng error ay kasama ang karaniwang output ng pipeline, na sinusundan ng mga mensahe tungkol sa abnormal na mga terminasyon (kung mayroon man), na sinusundan ng karaniwang error output.
Kung ang huling character ng resulta o mensahe ng error ay isang newline pagkatapos na ang character ay normal na tinanggal mula sa resulta o error na mensahe. Ito ay pare-pareho sa ibang mga halaga ng Tcl return, na karaniwang hindi nagtatapos sa mga bagong linya. Gayunpaman, kung-keepnewline ay tinukoy na pagkatapos ay ang trailing newline ay mananatili.
Kung ang standard na input ay hindi na-redirect sa `` <'' o `` << '' o `` <@ '' ang karaniwang input para sa unang command sa pipeline ay nakuha mula sa kasalukuyang standard na input ng application.
Kung ang huling arg ay `` at '' pagkatapos ang tubo ay papatayin sa background. Sa kasong ito angexecAng utos ay babalik sa isang listahan na ang mga elemento ay mga tagapagpakilala ng proseso para sa lahat ng mga subprocesses sa pipeline.Ang standard na output mula sa huling command sa pipeline ay pupunta sa karaniwang output ng application kung hindi ito na-redirect, at ang output ng error mula sa lahat ng mga utos sa pipeline ay pupunta sa standard error file ng application maliban kung ma-redirect.
Ang unang salita sa bawat utos ay kinuha bilang pangalan ng utos; Ang tilde-substitution ay isinagawa dito, at kung ang resulta ay walang mga slashes ang mga direktoryo sa variable ng kapaligiran PATH ay hinahanap para sa isang executable ng ibinigay na pangalan. Kung ang pangalan ay naglalaman ng isang slash pagkatapos ito ay dapat sumangguni sa isang executable naaabot mula sa kasalukuyang direktoryo. Walang pagpapalawak ng "glob" o iba pang mga substitutions na tulad ng shell ay isinagawa sa mga argumento sa mga utos.
Mga Isyu sa Portability
Windows (lahat ng mga bersyon)
Pagbabasa mula o pagsusulat sa isang socket, gamit ang ``@ fileId '' notasyon, hindi gumagana. Kapag nagbabasa mula sa isang socket, ang isang 16-bit na DOS application ay mag-hang at isang 32-bit na application ay babalik kaagad sa end-of-file. Kapag ang alinman sa uri ng application magsusulat sa isang socket, ang impormasyon ay sa halip na ipinadala sa console, kung ang isa ay naroroon, o ay itinapon.
Ang widget ng teksto ng Tk console ay hindi nagbibigay ng tunay na mga pamantayan ng IO na kakayahan. Sa ilalim ng Tk, kapag nagre-redirect mula sa karaniwang input, makikita ng lahat ng mga application ang isang agarang end-of-file; Ang impormasyon na na-redirect sa karaniwang output o karaniwang error ay itatapon.
Ang alinman sa pasulong o paatras na slashes ay tinatanggap bilang mga separators ng landas para sa mga argumento sa mga utos ng Tcl. Kapag nagsasagawa ng isang application, ang path name na tinukoy para sa application ay maaari ring maglaman ng pasulong o paatras na slashes bilang mga separators ng landas. Tandaan, gayunpaman, na ang karamihan sa mga application ng Windows ay tumatanggap ng mga argumento na may mga forward slashes lamang bilang mga delimiter ng opsyon at mga backslashes lamang sa mga landas. Ang anumang mga argumento sa isang application na tukuyin ang isang pangalan ng landas na may mga forward slashes ay hindi awtomatikong mabago upang gamitin ang backslash na character. Kung ang isang argumento ay naglalaman ng mga forward slash bilang path separator, maaaring ito o hindi maaaring makilala bilang isang path name, depende sa programa.
Bukod pa rito, kapag tumatawag sa 16-bit na DOS o Windows 3.X application, dapat gamitin ng lahat ng mga pangalan ng path ang short, cryptic, path format (eg, gamit ang `` applba ~ 1.def '' sa halip ng `` applbakery.default '' ).
Ang dalawa o higit pang pasulong o pabalik na mga slash sa isang hilera sa isang landas ay tumutukoy sa isang path ng network. Halimbawa, ang isang simpleng pag-concatenation ng root directoryc: / na may isang subdirectory/ windows / system magbubungac: // windows / system (dalawang slashes magkasama), na tumutukoy sa mount point na tinatawagsistema sa makina na tinatawagbintana (at angc: / ay hindi pinansin), at hindi katumbas ngc: / windows / system, na naglalarawan ng direktoryo sa kasalukuyang computer. Angsumali ang file Ang utos ay dapat gamitin upang ihalo ang mga bahagi ng landas.
Windows NT
Kapag sinusubukang magsagawa ng isang application,exec unang paghahanap para sa pangalan na tinukoy. Pagkatapos, sa pagkakasunud-sunod,.com, .exe, at.bat ay idinagdag sa dulo ng tinukoy na pangalan at hinahanap nito ang mas mahabang pangalan. Kung ang isang pangalan ng direktoryo ay hindi tinukoy bilang bahagi ng pangalan ng application, ang mga sumusunod na direktoryo ay awtomatikong hinanap sa pagkakasunud-sunod kapag sinusubukang hanapin ang application:
Ang direktoryo mula sa kung saan ang Tcl executable ay na-load.Ang kasalukuyang direktoryo.Ang direktoryo ng Windows NT 32-bit system.Ang direktoryo ng Windows NT 16-bit system.Ang direktoryo ng tahanan ng Windows NT.Ang mga direktoryo na nakalista sa landas. Upang maisagawa ang mga command na shell builtin tuladdir atkopya, dapat i-prepay ang tumatawag na ``cmd.exe / c'' sa nais na utos. Windows 95 Kapag sinusubukang magsagawa ng isang application,exec unang paghahanap para sa pangalan na tinukoy. Pagkatapos, sa pagkakasunud-sunod,.com, .exe, at.bat ay idinagdag sa dulo ng tinukoy na pangalan at hinahanap nito ang mas mahabang pangalan. Kung ang isang pangalan ng direktoryo ay hindi tinukoy bilang bahagi ng pangalan ng application, ang mga sumusunod na direktoryo ay awtomatikong hinanap sa pagkakasunud-sunod kapag sinusubukang hanapin ang application: Ang direktoryo mula sa kung saan ang Tcl executable ay na-load.Ang kasalukuyang direktoryo.Ang direktoryo ng Windows 95 system.Ang home directory ng Windows 95.Ang mga direktoryo na nakalista sa landas. Upang maisagawa ang mga command na shell builtin tuladdir atkopya, dapat i-prepay ang tumatawag na ``command.com / c'' sa nais na utos. Sa sandaling binasa ng isang 16-bit na application ng DOS ang standard na input mula sa isang console at pagkatapos ay huminto, ang lahat ng susunod na magpatakbo ng 16-bit na mga application ng DOS ay makakakita ng karaniwang input na isinara na. Ang 32-bit na mga application ay walang problemang ito at tatakbo nang tama, kahit na ang isang 16-bit na application ng DOS ay iniisip na ang standard na input ay sarado. Walang kilala na workaround para sa bug na ito sa oras na ito. Pag-redirect sa pagitan ngNUL: aparato at isang 16-bit na application ay hindi laging gumagana. Kapag nag-redirect mula saNUL:, ang ilang mga application ay maaaring mag-hang, ang iba ay makakakuha ng isang walang katapusan na stream ng `` 0x01 '' bytes, at ang ilan ay aktwal na makakakuha ng isang kagyat na end-of-file; ang pag-uugali ay tila depende sa isang bagay na naipon sa application mismo. Kapag nagre-redirect ng higit sa 4K o higit paNUL:, mag-hang ang ilang mga application. Ang mga problema sa itaas ay hindi mangyayari sa 32-bit na mga application. Ang lahat ng mga DOS 16-bit na application ay tumatakbo nang sabay-sabay. Ang lahat ng mga karaniwang input mula sa isang pipe sa isang 16-bit DOS application ay nakolekta sa isang pansamantalang file; ang kabilang dulo ng tubo ay dapat sarado bago magsimula ang pagpapatupad ng 16-bit na DOS application.Ang lahat ng karaniwang output o error mula sa isang 16-bit na DOS application sa isang pipe ay nakolekta sa pansamantalang mga file; dapat na wakasan ang application bago ang mga pansamantalang file ay nai-redirect sa susunod na yugto ng pipeline. Ito ay dahil sa isang workaround para sa isang Windows 95 bug sa pagpapatupad ng mga tubo, at kung paano ang karaniwang Windows 95 DOS shell humahawak ng tubo mismo. Ang ilang mga application, tulad ngcommand.com, ay hindi dapat maisagawa nang interactively. Ang mga application na direktang ma-access ang console window, sa halip na magbasa mula sa kanilang karaniwang input at pagsulat sa kanilang karaniwang output ay maaaring mabigo, mag-hang Tcl, o kahit na mag-hang sa system kung ang kanilang sariling pribadong console window ay hindi magagamit sa kanila. Macintosh Angexec Ang command ay hindi ipinatupad at hindi umiiral sa ilalim ng Macintosh. Unix Angexec Ang utos ay ganap na gumagana at gumagana tulad ng inilarawan. error (n), bukas (n) execute, pipeline, redirection, subprocess Mahalaga: Gamitin ang lalaki command ( % lalaki ) upang makita kung paano ginagamit ang utos sa iyong partikular na computer. Tingnan din
Mga Keyword




