亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch45_23.htm

?? the unix power tools
?? HTM
字號(hào):
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 45] 45.23 The Ins and Outs of Redirected I/O Loops </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly &amp; Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:54:52Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-260-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch45_01.htm"TITLE="45. Shell Programming for the Initiated"><LINKREL="prev"HREF="ch45_22.htm"TITLE="45.22 Handling Files Line-by-Line "><LINKREL="next"HREF="ch45_24.htm"TITLE="45.24 A Shell Can Read a Script from its Standard Input, But..."></HEAD><BODYBGCOLOR="#FFFFFF"TEXT="#000000"><DIVCLASS="htmlnav"><H1><IMGSRC="gifs/smbanner.gif"ALT="UNIX Power Tools"USEMAP="#srchmap"BORDER="0"></H1><MAPNAME="srchmap"><AREASHAPE="RECT"COORDS="0,0,466,58"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="467,0,514,18"HREF="jobjects/fsearch.htm"ALT="Search this book"></MAP><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch45_22.htm"TITLE="45.22 Handling Files Line-by-Line "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 45.22 Handling Files Line-by-Line "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 45<BR>Shell Programming for the Initiated</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch45_24.htm"TITLE="45.24 A Shell Can Read a Script from its Standard Input, But..."><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 45.24 A Shell Can Read a Script from its Standard Input, But..."BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-7928">45.23 The Ins and Outs of Redirected I/O Loops </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-54021"></A><ACLASS="indexterm"NAME="AUTOID-54023"></A><ACLASS="indexterm"NAME="AUTOID-54026"></A><ACLASS="indexterm"NAME="AUTOID-54029"></A>The Bourne shell usually runs<SPANCLASS="link">a loop with redirected input or output (<ACLASS="linkend"HREF="ch45_22.htm"TITLE="Handling Files Line-by-Line ">45.22</A>)</SPAN>in a<SPANCLASS="link">subshell (<ACLASS="linkend"HREF="ch38_04.htm"TITLE="Subshells ">38.4</A>)</SPAN>.For the <EMCLASS="emphasis">formprog</EM> script in article<ACLASS="xref"HREF="ch45_22.htm"TITLE="Handling Files Line-by-Line ">45.22</A>,this means, among other things, that:</P><ULCLASS="itemizedlist"><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-54039"></A>Any command inside the loop that reads its standard input willread from the pipe or file redirected to the loop's standard input.That's something you have to pay attention to, because the only command that should read from the file is usually the <EMCLASS="emphasis">read</EM> command at the topof the loop.The inputs of other commands inside the loop&nbsp;- like commands that readfrom the terminal&nbsp;- have to be redirected to read from somewhere otherthan the loop's standard input.</P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-54045"></A><ACLASS="indexterm"NAME="AUTOID-54048"></A>In many Bourne shells, if you use the<SPANCLASS="link"><EMCLASS="emphasis">exit</EM> (<ACLASS="linkend"HREF="ch38_04.htm"TITLE="Subshells ">38.4</A>)</SPAN>command inside aredirected loop, that will only terminate the subshell that's runningthe loop; it will <EMCLASS="emphasis">not</EM> terminate thescript.It's hard to call this a &quot;feature&quot;; I'd call it a bug.The script in article<ACLASS="xref"HREF="ch45_22.htm"TITLE="Handling Files Line-by-Line ">45.22</A>has a workaround for this; see the next paragraph.Later versions of Bourne-like shells have fixed this problem, more or less,but the fix below should work in all Bourne shells.</P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-54057"></A><ACLASS="indexterm"NAME="AUTOID-54060"></A><ACLASS="indexterm"NAME="AUTOID-54063"></A>If there's any error inside the loop that should terminate the script,an error message is written to file descriptor 2.File descriptor 2 is redirected to an error-holding file at the subshell(loop) output.A <EMCLASS="emphasis">break</EM> command can end the loop right away.After the loop ends, if the error file has anything in it, that meansthere was an error&nbsp;- if there are more commands to run, the script canterminate before running them.</P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-54069"></A><ACLASS="indexterm"NAME="AUTOID-54072"></A>You can test the<SPANCLASS="link">exit status (<ACLASS="linkend"HREF="ch44_07.htm"TITLE="Exit Status of UNIX Processes ">44.7</A>)</SPAN>of the redirected-I/O loop.To end the loop, use a command like <CODECLASS="literal">exit&nbsp;0</CODE>, <CODECLASS="literal">exit&nbsp;2</CODE>,and so on.Just after the <CODECLASS="literal">done</CODE> command outside the loop, use<SPANCLASS="link"><CODECLASS="literal">case&nbsp;$?</CODE> (<ACLASS="linkend"HREF="ch44_05.htm"TITLE="Test String Values with Bourne Shell case ">44.5</A>)</SPAN>to test the loop's status.For instance, a 0 status might mean the loop worked fine, a 1 couldsignal one kind of error, a 2 status a different error, and so on.</P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-54083"></A><ACLASS="indexterm"NAME="AUTOID-54086"></A>If you change the value of any shell or environment variables inside theloop, their values outside the loop (after the <EMCLASS="emphasis">done</EM> command atthe end of the loop) will not be changed.Here's the usual fix for that problem.You use another file descriptor, like file descriptor 6,and write variable-settingcommands to it.You redirect that file descriptor to a temporary file.Then, use the shell's<SPANCLASS="link">dot command (<CODECLASS="literal">.</CODE>) (<ACLASS="linkend"HREF="ch44_23.htm"TITLE="Reading Files with the . and source Commands ">44.23</A>)</SPAN>to read the temporary file into the shell outside the loop.For example, to get the value of a variable named <EMCLASS="emphasis">varname</EM> outside theloop:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><ACLASS="indexterm"NAME="AUTOID-54095"></A>while whateverdo  ...   echo &quot;varname='value'&quot; 1&gt;&amp;6    ...done 6&gt; var_set_file. var_set_file</PRE></BLOCKQUOTE></P></LI></UL><PCLASS="para">Greg Ubben sent me two other ways that he prefers.The first one depends on having a <EMCLASS="emphasis">read</EM> that accepts redirectionon its command line, which most do these days.The second works when you can put the usage in the same scope (withinthe<SPANCLASS="link">curly braces (<ACLASS="linkend"HREF="ch13_08.htm"TITLE="Using {list} to Group Bourne Shell Commands ">13.8</A>)</SPAN>)as the redirection:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">exec 3&lt; file   {while read line &lt;&amp;3       while read linedo       do     var=value            var=valuedone       doneexec 3&lt;&amp;-       echo &quot;var = $var&quot;echo &quot;var = $var&quot;   } &lt; file</PRE></BLOCKQUOTE></P><PCLASS="para">Putting the loop inside a function and redirecting into the functionalso seems to avoid the subshell problem.But don't take my (our) word for it:test it on the shell you'll be using.<ACLASS="indexterm"NAME="AUTOID-54104"></A><ACLASS="indexterm"NAME="AUTOID-54105"></A></P><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">JP</SPAN></P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch45_22.htm"TITLE="45.22 Handling Files Line-by-Line "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 45.22 Handling Files Line-by-Line "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="book"HREF="index.htm"TITLE="UNIX Power Tools"><IMGSRC="gifs/txthome.gif"SRC="gifs/txthome.gif"ALT="UNIX Power Tools"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch45_24.htm"TITLE="45.24 A Shell Can Read a Script from its Standard Input, But..."><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 45.24 A Shell Can Read a Script from its Standard Input, But..."BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">45.22 Handling Files Line-by-Line </TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="index"HREF="index/idx_0.htm"TITLE="Book Index"><IMGSRC="gifs/index.gif"SRC="gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172">45.24 A Shell Can Read a Script from its Standard Input, But...</TD></TR></TABLE><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><IMGSRC="gifs/smnavbar.gif"SRC="gifs/smnavbar.gif"USEMAP="#map"BORDER="0"ALT="The UNIX CD Bookshelf Navigation"><MAPNAME="map"><AREASHAPE="RECT"COORDS="0,0,73,21"HREF="../index.htm"ALT="The UNIX CD Bookshelf"><AREASHAPE="RECT"COORDS="74,0,163,21"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="164,0,257,21"HREF="../unixnut/index.htm"ALT="UNIX in a Nutshell"><AREASHAPE="RECT"COORDS="258,0,321,21"HREF="../vi/index.htm"ALT="Learning the vi Editor"><AREASHAPE="RECT"COORDS="322,0,378,21"HREF="../sedawk/index.htm"ALT="sed &amp; awk"><AREASHAPE="RECT"COORDS="379,0,438,21"HREF="../ksh/index.htm"ALT="Learning the Korn Shell"><AREASHAPE="RECT"COORDS="439,0,514,21"HREF="../lrnunix/index.htm"ALT="Learning the UNIX Operating System"></MAP></DIV></BODY></HTML>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品色哟哟| 岛国精品在线播放| 欧美国产禁国产网站cc| 欧美精品在线视频| 成人av高清在线| 久久9热精品视频| 亚洲一区二区在线播放相泽| 久久在线观看免费| 91麻豆精品国产91久久久久久 | 懂色中文一区二区在线播放| 午夜精品一区在线观看| **网站欧美大片在线观看| 精品国产乱码久久久久久蜜臀| 日本乱人伦一区| av一区二区三区黑人| 极品少妇一区二区| 奇米综合一区二区三区精品视频| 亚洲日本一区二区| 国产精品日日摸夜夜摸av| 精品人在线二区三区| 欧美日韩激情一区| 欧美亚洲国产怡红院影院| 白白色 亚洲乱淫| 国产1区2区3区精品美女| 久久精品999| 日本不卡在线视频| 午夜亚洲福利老司机| 一区二区三区欧美| 亚洲精品视频自拍| 亚洲欧美一区二区久久| 国产精品伦一区二区三级视频| 久久久久久久久久久久久夜| 欧美一区二区久久久| 制服.丝袜.亚洲.中文.综合| 欧美精品在线视频| 欧美一区二区三区免费在线看| 欧美色综合网站| 欧美日韩一二三区| 欧美精品乱码久久久久久| 欧美美女网站色| 欧美一二三区在线观看| 日韩一区二区高清| 欧美大片免费久久精品三p| 欧美一区二区日韩一区二区| 日韩一级在线观看| 久久女同精品一区二区| 欧美韩日一区二区三区| 亚洲欧美自拍偷拍| 亚洲另类一区二区| 亚洲va中文字幕| 欧美aa在线视频| 黄页视频在线91| 国产美女精品人人做人人爽| 丁香天五香天堂综合| kk眼镜猥琐国模调教系列一区二区| voyeur盗摄精品| 欧美性生交片4| 日韩一区二区电影| 中国av一区二区三区| 亚洲男人的天堂av| 日本中文字幕一区| 久久99国产精品尤物| 国产suv精品一区二区6| 91麻豆成人久久精品二区三区| 欧美色国产精品| 精品久久久久久久一区二区蜜臀| 日本一区二区三区视频视频| 亚洲另类色综合网站| 免费人成在线不卡| 不卡一区二区三区四区| 欧美午夜精品理论片a级按摩| 日韩一二三区不卡| 一区二区中文字幕在线| 午夜成人免费电影| 粉嫩aⅴ一区二区三区四区五区| 日本韩国一区二区| 久久欧美一区二区| 亚洲午夜激情网页| 国产高清久久久| 欧美少妇xxx| 亚洲国产精品精华液2区45| 亚洲国产欧美日韩另类综合 | 日本高清成人免费播放| 欧美一区二区三区精品| 中文字幕一区二区在线观看| 日本va欧美va精品| 91色综合久久久久婷婷| 欧美成人精品福利| 亚洲大片在线观看| 成人激情小说网站| 欧美一级日韩免费不卡| 亚洲丝袜制服诱惑| 国产经典欧美精品| 555夜色666亚洲国产免| 亚洲天堂免费在线观看视频| 日本不卡在线视频| 欧美网站大全在线观看| 亚洲国产精品成人综合| 麻豆精品一区二区| 欧美性色综合网| 1区2区3区欧美| 国产二区国产一区在线观看| 欧美精选午夜久久久乱码6080| 国产欧美日韩精品在线| 麻豆91精品91久久久的内涵| 色婷婷综合视频在线观看| 国产欧美精品区一区二区三区| 奇米影视一区二区三区| 欧美日韩二区三区| 亚洲精品欧美专区| 99re在线视频这里只有精品| 久久精品男人的天堂| 精品中文字幕一区二区小辣椒| 欧美日韩一区二区三区不卡 | 国产一区二区三区四| 欧美一级二级在线观看| 午夜精品成人在线| 精品视频在线免费观看| 亚洲综合色成人| 色综合夜色一区| 亚洲图片你懂的| 99re热这里只有精品免费视频| 久久久久久久性| 国产精品一区二区x88av| 久久综合久久99| 国产一区二区在线观看视频| www国产成人免费观看视频 深夜成人网| 天天色图综合网| 欧美精品乱码久久久久久| 日韩在线观看一区二区| 4438x成人网最大色成网站| 91欧美激情一区二区三区成人| 欧美国产日本韩| 国产91露脸合集magnet| 国产精品美女一区二区三区| 国产91精品一区二区麻豆网站| 久久美女艺术照精彩视频福利播放 | 激情六月婷婷久久| 日韩一区二区在线观看视频| 天天操天天综合网| 日韩精品中文字幕一区 | 紧缚奴在线一区二区三区| 日韩欧美视频在线| 精品一区二区三区免费视频| 久久综合九色综合欧美98| 国产高清久久久| 亚洲天堂免费在线观看视频| 色欧美88888久久久久久影院| 亚洲另类春色校园小说| 欧美日韩色综合| 蜜臀久久久久久久| 久久久久久久免费视频了| 国产大片一区二区| 亚洲人成在线观看一区二区| 91久久国产综合久久| 日韩一区精品视频| 精品国产凹凸成av人网站| 成人高清视频在线| 亚洲最新在线观看| 精品国产伦一区二区三区观看方式| 国产精品小仙女| 亚洲啪啪综合av一区二区三区| 日本高清不卡视频| 日韩欧美黄色影院| 国产精品理伦片| 91麻豆自制传媒国产之光| 亚洲一区二区三区免费视频| 日韩一区和二区| 粉嫩蜜臀av国产精品网站| 亚洲一区二区三区小说| 日韩视频一区二区三区| 成人国产精品免费网站| 日韩成人免费看| 中文字幕欧美一| 日韩美女一区二区三区| voyeur盗摄精品| 久久99精品国产麻豆婷婷| 亚洲欧美一区二区三区国产精品 | 欧美不卡在线视频| 不卡免费追剧大全电视剧网站| 亚洲国产精品人人做人人爽| 久久婷婷色综合| 欧美日韩精品一区二区三区蜜桃| 国产露脸91国语对白| 亚洲综合一二区| 久久久国产一区二区三区四区小说 | 日韩精品一区二区三区四区视频| 欧美久久久一区| 日韩一级视频免费观看在线| 亚洲欧美另类小说| 97成人超碰视| 久久精品国产亚洲5555| 亚洲精品国产成人久久av盗摄| 亚洲精品一区二区精华| 欧美午夜影院一区| 成人免费看视频| 精品一区二区三区在线播放| 亚洲一区二区精品久久av| 国产精品乱码一区二区三区软件 | 处破女av一区二区|