📄 ch44_13.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 44] 44.13 read: Reading from the Keyboard </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly & Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly & Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:53:49Z"><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="ch44_01.htm"TITLE="44. Shell Programming for the Uninitiated"><LINKREL="prev"HREF="ch44_12.htm"TITLE="44.12 Trapping Exits Caused by Interrupts "><LINKREL="next"HREF="ch44_14.htm"TITLE="44.14 Putting awk, sed, etc., Inside Shell Scripts "></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="ch44_12.htm"TITLE="44.12 Trapping Exits Caused by Interrupts "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 44.12 Trapping Exits Caused by Interrupts "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 44<BR>Shell Programming for the Uninitiated</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch44_14.htm"TITLE="44.14 Putting awk, sed, etc., Inside Shell Scripts "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 44.14 Putting awk, sed, etc., Inside Shell Scripts "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-7700">44.13 read: Reading from the Keyboard </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-51140"></A><ACLASS="indexterm"NAME="AUTOID-51143"></A>The Bourne shell <EMCLASS="emphasis">read</EM> command reads a line of one or more words from thekeyboard (or standard input)[5]and stores the words in one or more shell variables.This is usually what you use to read an answer from the keyboard.For example:</P><BLOCKQUOTECLASS="footnote"><PCLASS="para">[5] Some early versions of <EMCLASS="emphasis">read</EM> don't handle<SPANCLASS="link"><CODECLASS="literal"><</CODE> redirection (<ACLASS="linkend"HREF="ch13_01.htm#UPT-ART-1023"TITLE="Using Standard Input and Output">13.1</A>)</SPAN>;they can only read from the terminal.</P></BLOCKQUOTE><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">echo -n "Type the filename: "read filename</PRE></BLOCKQUOTE></P><ULCLASS="itemizedlist"><LICLASS="listitem"><PCLASS="para">If you give the name of one shell variable, <EMCLASS="emphasis">read</EM> stores everythingfrom the line into that variable:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">read <CODECLASS="replaceable"><I>varname</I></CODE></PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">If you name more than one variable, the first word typed goes into thefirst variable, the second word into the second variable, and so on...all leftover words go into the last variable.So, for example, with these commands:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">echo -n "Enter first and last name: "read fn ln</PRE></BLOCKQUOTE></P><PCLASS="para">If a user types <CODECLASS="literal">John</CODE> <CODECLASS="literal">Smith</CODE>, the word <EMCLASS="emphasis">John</EM> would beavailable from <CODECLASS="literal">$fn</CODE> and <EMCLASS="emphasis">Smith</EM> would be in <CODECLASS="literal">$ln</CODE>.If the user types <CODECLASS="literal">Jane</CODE> <CODECLASS="literal">de</CODE> <CODECLASS="literal">Boes</CODE>, then <EMCLASS="emphasis">Jane</EM>would be in <CODECLASS="literal">$fn</CODE> and the two words <EMCLASS="emphasis">de Boes</EM> are in <CODECLASS="literal">$ln</CODE>.</P></LI></UL><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-51180"></A>Some Bourne shells have a built-in function named <EMCLASS="emphasis">line</EM> thatreads a line from standard input and writes it to standard output.Use it this way:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">value=`line`</PRE></BLOCKQUOTE></P><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-51186"></A>The<SPANCLASS="link"><EMCLASS="emphasis">grabchars</EM> (<ACLASS="linkend"HREF="ch45_32.htm"TITLE="A Better read Command: grabchars ">45.32</A>)</SPAN>program lets you read from the keyboard without needing to pressRETURN.</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="ch44_12.htm"TITLE="44.12 Trapping Exits Caused by Interrupts "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 44.12 Trapping Exits Caused by Interrupts "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="ch44_14.htm"TITLE="44.14 Putting awk, sed, etc., Inside Shell Scripts "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 44.14 Putting awk, sed, etc., Inside Shell Scripts "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">44.12 Trapping Exits Caused by Interrupts </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">44.14 Putting awk, sed, etc., Inside Shell Scripts </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 & 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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -