⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch47_04.htm

📁 the unix power tools
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 47] 47.4 C Shell Variable Operators and Expressions </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:55:59Z"><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="ch47_01.htm"TITLE="47. C Shell Programming...NOT"><LINKREL="prev"HREF="ch47_03.htm"TITLE="47.3 Conditional Statements with if "><LINKREL="next"HREF="ch47_05.htm"TITLE="47.5 Using C Shell Arrays "></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="ch47_03.htm"TITLE="47.3 Conditional Statements with if "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 47.3 Conditional Statements with if "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 47<BR>C Shell Programming...NOT</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch47_05.htm"TITLE="47.5 Using C Shell Arrays "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 47.5 Using C Shell Arrays "BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-7650">47.4 C Shell Variable Operators and Expressions </A></H2><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="UPT-ART-7650-SECT-1.1">47.4.1 Variables </A></H3><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56681"></A><ACLASS="indexterm"NAME="AUTOID-56684"></A><ACLASS="indexterm"NAME="AUTOID-56687"></A>In the following substitutions, braces (<CODECLASS="literal">{}</CODE>) are optional,except when needed to separate a variable name from following characters that would otherwise be a part of it.The array <EMCLASS="emphasis">argv</EM> (the command-line arguments) is used as an example,but any <EMCLASS="emphasis">csh</EM> array name may be used.<TABLECLASS="informaltable"><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${<CODECLASS="replaceable"><I>var</I></CODE>}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">The value of variable <EMCLASS="emphasis">var</EM>.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${<CODECLASS="replaceable"><I>var</I></CODE>[<CODECLASS="replaceable"><I>i</I></CODE>]}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Select word or words in position <EMCLASS="emphasis">i</EM> of<EMCLASS="emphasis">var</EM>. <EMCLASS="emphasis">i</EM> can be a single number,a range <CODECLASS="replaceable"><I>m</I></CODE><CODECLASS="literal">-</CODE><CODECLASS="replaceable"><I>n</I></CODE>,a range <CODECLASS="literal">-</CODE><CODECLASS="replaceable"><I>n</I></CODE> (missing <CODECLASS="replaceable"><I>m</I></CODE> implies 1),a range <CODECLASS="replaceable"><I>m</I></CODE><CODECLASS="literal">-</CODE> (missing <CODECLASS="replaceable"><I>n</I></CODE> implies allremaining words), or <CODECLASS="literal">*</CODE> (select all words). <EMCLASS="emphasis">i</EM> can alsobe a variable that expands to one of these values.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${#<CODECLASS="replaceable"><I>var</I></CODE>}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">The number of words in <EMCLASS="emphasis">var</EM>.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${#argv}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">The number of command-line arguments.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${argv[<CODECLASS="replaceable"><I>n</I></CODE>]}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Individual arguments on command line (positional parameters).<EMCLASS="emphasis">n</EM> is a number (1, 12, etc.).</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${<CODECLASS="replaceable"><I>n</I></CODE>}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Same as <CODECLASS="literal">${argv[</CODE><CODECLASS="replaceable"><I>n</I></CODE><CODECLASS="literal">]}</CODE>.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${argv[*]}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">All arguments on command line.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">$*</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Same as <CODECLASS="literal">$argv[*]</CODE>.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${argv[$#argv]}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">The last argument.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">${?<CODECLASS="replaceable"><I>var</I></CODE>}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Return 1 if <EMCLASS="emphasis">var</EM> is set; 0 if <EMCLASS="emphasis">var</EM> is not set.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">! ${?<CODECLASS="replaceable"><I>var</I></CODE>}</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Return 0 if <EMCLASS="emphasis">var</EM> is set; 1 if <EMCLASS="emphasis">var</EM> is not set.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">$$</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Process number of current shell; useful as part of a filenamefor creating temporary files with unique names.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">$&lt;</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Read a line from standard input.</P></TD></TR></TBODY></TABLE></P></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="UPT-ART-7650-SECT-1.2">47.4.2 Expressions </A></H3><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56797"></A><ACLASS="indexterm"NAME="AUTOID-56800"></A><ACLASS="indexterm"NAME="AUTOID-56803"></A><ACLASS="indexterm"NAME="AUTOID-56806"></A><ACLASS="indexterm"NAME="AUTOID-56809"></A><ACLASS="indexterm"NAME="AUTOID-56811"></A><ACLASS="indexterm"NAME="AUTOID-56814"></A>Expressions are used in C shell <CODECLASS="replaceable"><I>@</I></CODE>, <EMCLASS="emphasis">if</EM>, and <EMCLASS="emphasis">while</EM> statements to perform arithmetic, string comparisons, file testing,and so on.<EMCLASS="emphasis">exit</EM> and <EMCLASS="emphasis">set</EM> can also specify expressions.Expressions are formed by combining variables and constants withoperators that resemble those in the C programming language.Operator precedence is the same as in C but can be remembered asfollows:</P><OLCLASS="orderedlist"><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56825"></A><ACLASS="indexterm"NAME="AUTOID-56828"></A><ACLASS="indexterm"NAME="AUTOID-56831"></A><CODECLASS="literal">* / %</CODE></P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56837"></A><ACLASS="indexterm"NAME="AUTOID-56840"></A><CODECLASS="literal">+ -</CODE></P></LI></OL><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56845"></A><ACLASS="indexterm"NAME="AUTOID-56848"></A><ACLASS="indexterm"NAME="AUTOID-56851"></A><ACLASS="indexterm"NAME="AUTOID-56854"></A><ACLASS="indexterm"NAME="AUTOID-56857"></A>Group all other expressions inside (&nbsp;).Parentheses are required if the expression contains<CODECLASS="literal">&lt;</CODE>, <CODECLASS="literal">&gt;</CODE>, <CODECLASS="literal">&amp;</CODE>, or <CODECLASS="literal">|</CODE>.</P></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="UPT-ART-7650-SECT-1.3">47.4.3 Operators </A></H3><PCLASS="para">Operators can be one of the following types:</P><DIVCLASS="sect3"><H4CLASS="sect3"><ACLASS="title"NAME="UPT-ART-7650-SECT-1.3.1">47.4.3.1 Assignment Operators </A></H4><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56870"></A><ACLASS="indexterm"NAME="AUTOID-56873"></A><ACLASS="indexterm"NAME="AUTOID-56876"></A><ACLASS="indexterm"NAME="AUTOID-56879"></A><ACLASS="indexterm"NAME="AUTOID-56882"></A><ACLASS="indexterm"NAME="AUTOID-56885"></A><ACLASS="indexterm"NAME="AUTOID-56888"></A><ACLASS="indexterm"NAME="AUTOID-56891"></A><ACLASS="indexterm"NAME="AUTOID-56894"></A><ACLASS="indexterm"NAME="AUTOID-56897"></A><ACLASS="indexterm"NAME="AUTOID-56900"></A><ACLASS="indexterm"NAME="AUTOID-56903"></A><TABLECLASS="informaltable"><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">=</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Assign value.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">+=  -=</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Reassign after addition/subtraction.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">*=  /=  %=</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Reassign after multiplication/division/remainder.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">&amp;= ^= |=</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Reassign after bitwise AND/XOR/OR.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">++</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Increment.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">-</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Decrement.</P></TD></TR></TBODY></TABLE></P></DIV><DIVCLASS="sect3"><H4CLASS="sect3"><ACLASS="title"NAME="UPT-ART-7650-SECT-1.3.2">47.4.3.2 Arithmetic Operators </A></H4><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56942"></A><ACLASS="indexterm"NAME="AUTOID-56945"></A><ACLASS="indexterm"NAME="AUTOID-56948"></A><ACLASS="indexterm"NAME="AUTOID-56951"></A><ACLASS="indexterm"NAME="AUTOID-56954"></A><ACLASS="indexterm"NAME="AUTOID-56957"></A><TABLECLASS="informaltable"><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">*  /  %</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Multiplication; integer division; modulus (remainder).</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">c+  -</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Addition; subtraction.</P></TD></TR></TBODY></TABLE></P></DIV><DIVCLASS="sect3"><H4CLASS="sect3"><ACLASS="title"NAME="UPT-ART-7650-SECT-1.3.3">47.4.3.3 Bitwise and Logical Operators </A></H4><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56976"></A><ACLASS="indexterm"NAME="AUTOID-56979"></A><ACLASS="indexterm"NAME="AUTOID-56982"></A><ACLASS="indexterm"NAME="AUTOID-56985"></A><ACLASS="indexterm"NAME="AUTOID-56988"></A><ACLASS="indexterm"NAME="AUTOID-56991"></A><ACLASS="indexterm"NAME="AUTOID-56994"></A><ACLASS="indexterm"NAME="AUTOID-56997"></A><ACLASS="indexterm"NAME="AUTOID-57000"></A><ACLASS="indexterm"NAME="AUTOID-57003"></A><ACLASS="indexterm"NAME="AUTOID-57006"></A><ACLASS="indexterm"NAME="AUTOID-57009"></A><TABLECLASS="informaltable"><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">~</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Binary inversion (one's complement).</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">!</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Logical negation.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">&lt;&lt;  &gt;&gt;</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Bitwise left shift; bitwise right shift.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">&amp;</P></TD><TDCLASS="entry"ROWSPAN="1"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -