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

📄 ch05_03.htm

📁 unix基础教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><head><title>Variables (UNIX in a Nutshell: System V Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Arnold Robbins" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly &amp; Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="1-56592-427-4" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="UNIX in a Nutshell: System V Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Book Title" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch05_02.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch05_04.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">5.3. Variables</h2><p><a name="unut-ch-5-ix-variables-csh-shell" /><a name="unut-ch-5-ix-csh-c-shell-variables" />This section describes the following:</p><ul><li><p>Variable substitution</p></li><li><p>Variable modifiers</p></li><li><p>Predefined shell variables</p></li><li><p>Example <tt class="literal">.cshrc</tt> file</p></li><li><p>Environment variables</p></li></ul><a name="unut-ch-5-sect-3.1" /><div class="sect2"><h3 class="sect2">5.3.1. Variable Substitution</h3><p><a name="IXT-5-122925" />In the following substitutions, braces (<tt class="literal">{}</tt>) are optional,except when needed to separate a variable name from following characters that would otherwise be a part of it.</p><table border="1" cellpadding="3"><tr><td><tt class="literal">${</tt><em class="replaceable"><tt>var</em><tt class="literal">}</tt></td><td>The value of variable <em class="emphasis">var</tt></em>.</td></tr><tr><td><tt class="literal">${</tt><em class="replaceable"><tt>var</em><tt class="literal">[</tt><em class="replaceable">i</em><tt class="literal">]}</tt></td><td><p>Select word or words in position <em class="emphasis">i</em> of <em class="emphasis">var</tt></em>.<em class="emphasis">i</em> can be a single number,a range <em class="emphasis">m</em>&#8211;<em class="emphasis">n</em>,a range <tt class="literal">-</tt><em class="emphasis">n</em>(missing <em class="emphasis">m</em> implies 1),a range <em class="emphasis">m</em><tt class="literal">-</tt>(missing <em class="emphasis">n</em> implies all remaining words),or <tt class="literal">*</tt> (select all words).<em class="emphasis">i</em> can also be a variable thatexpands to one of these values.</p></td></tr><tr><td><tt class="literal">${#</tt><em class="replaceable"><tt>var</em><tt class="literal">}</tt></td><td>The number of words in <em class="emphasis">var</tt></em>.</td></tr><tr><td><tt class="literal">${#argv}</tt></td><td>The number of arguments.</td></tr><tr><td><tt class="literal">$0</tt></td><td>Name of the program. (Usually not set in interactive shells.)</td></tr><tr><td><tt class="literal">${argv[</tt><em class="replaceable"><tt>n</tt></em><tt class="literal">]}</tt></td><td><p>Individual arguments on command line (positional parameters).<em class="emphasis">n</em> = 1&#8211;9.</p></td></tr><tr><td><tt class="literal">${</tt><em class="replaceable"><tt>n</tt></em><tt class="literal">}</tt></td><td><p>Same as<tt class="literal">${argv[</tt><em class="emphasis">n</em><tt class="literal">]}</tt>.</p></td></tr><tr><td><tt class="literal">${argv[*]}</tt></td><td>All arguments on command line.</td></tr><tr><td><tt class="literal">$*</tt></td><td>Same as <tt class="literal">$argv[*]</tt>.</td></tr><tr><td><tt class="literal">$argv[$#argv]</tt></td><td>The last argument.</td></tr><tr><td><tt class="literal">${?</tt><em class="replaceable"><tt>var</em><tt class="literal">}</tt></td><td><p>Return 1 if <em class="emphasis">var</tt></em> is set;0 if <em class="emphasis">var</em> is not set.</p></td></tr><tr><td><tt class="literal">$$</tt></td><td><p>Process number of current shell; useful as part of a filenamefor creating temporary files with unique names.</p></td></tr><tr><td><tt class="literal">$?0</tt></td><td>Return 1 if input filename is known; 0 if not.</td></tr><tr><td><tt class="literal">$&lt;</tt></td><td>Read a line from standard input.</td></tr></table><p><a name="unut-ch-5-sect-3.1.1" /><div class="sect3"><h3 class="sect3">5.3.1.1. Examples</h3><p>Sort the third through last arguments (files)and save the output in a unique temporary file:</p><blockquote><pre class="code">sort $argv[3-] &gt; tmp.$$</pre></blockquote><p>Process <tt class="literal">.cshrc</tt> commands only if the shell is interactive(i.e., the <tt class="literal">prompt</tt> variable must be set):</p><blockquote><pre class="code">if ($?prompt) then   <i class="lineannotation">set commands,</i>   <i class="lineannotation">alias commands,</i>   <i class="lineannotation">etc.</i>endif</pre></blockquote></div></div><a name="unut-ch-5-sect-3.2" /><div class="sect2"><h3 class="sect2">5.3.2. Variable Modifiers</h3><p><a name="IXT-5-122926" />Except for <tt class="literal">$?</tt><em class="emphasis">var</em>,<tt class="literal">$$</tt>, <tt class="literal">$?0</tt>, and <tt class="literal">$&lt;</tt>,the previous variable substitutions may be followed by one of thefollowing modifiers. When braces are used, the modifier goes inside them.</p><dl><dt><tt class="literal">:r</tt></dt><dd>Return the variable's root.</p></dd><dt><tt class="literal">:e</tt></dt><dd>Return the variable's extension.</p></dd><dt><tt class="literal">:h</tt></dt><dd>Return the variable's header.</p></dd><dt><tt class="literal">:t</tt></dt><dd>Return the variable's tail.</p></dd><dt><tt class="literal">:gr</tt></dt><dd>Return all roots.</p></dd><dt><tt class="literal">:ge</tt></dt><dd>Return all extensions.</p></dd><dt><tt class="literal">:gh</tt></dt><dd>Return all headers.</p></dd><dt><tt class="literal">:gt</tt></dt><dd>Return all tails.</p></dd><dt><tt class="literal">:q</tt></dt><dd>Quote a wordlist variable, keeping the items separate.Useful when the variable contains filename metacharacters that shouldnot be expanded.</p></dd><dt><tt class="literal">:x</tt></dt><dd>Quote a pattern, expanding it into a wordlist.</p></dd></dl><a name="unut-ch-5-sect-3.2.1" /><div class="sect3"><h3 class="sect3">5.3.2.1. Examples using pathname modifiers</h3><p><a name="IXT-5-122927" />This table shows the use of pathname modifiers on the following variable:</p><blockquote><pre class="code">set aa=(/progs/num.c /book/chap.ps)</pre></blockquote><table border="1" cellpadding="3"><tr><th><em class="emphasis">Variable Portion</em></th><th><em class="emphasis">Specification</em></th><th><em class="emphasis">Output Result</em></th></tr><tr><td>Normal variable</td><td><tt class="literal">echo $aa</tt></td><td><tt class="literal">/progs/num.c /book/chap.ps</tt></td></tr><tr><td>Second root</td><td><tt class="literal">echo $aa[2]:r</tt></td><td><tt class="literal">/book/chap</tt></td></tr><tr><td>Second header</td><td><tt class="literal">echo $aa[2]:h</tt></td><td><tt class="literal">/book</tt></td></tr><tr><td>Second tail</td><td><tt class="literal">echo $aa[2]:t</tt></td><td><tt class="literal">chap.ps</tt></td></tr><tr><td>Second extension</td><td><tt class="literal">echo $aa[2]:e</tt></td><td><tt class="literal">ps</tt></td></tr><tr><td>Root</td><td><tt class="literal">echo $aa:r</tt></td><td><tt class="literal">/progs/num /book/chap.ps</tt></td></tr><tr><td>Global root</td><td><tt class="literal">echo $aa:gr</tt></td><td><tt class="literal">/progs/num /book/chap</tt></td></tr><tr><td>Header</td><td><tt class="literal">echo $aa:h</tt></td><td><tt class="literal">/progs /book/chap.ps</tt></td></tr><tr><td>Global header</td><td><tt class="literal">echo $aa:gh</tt></td><td><tt class="literal">/progs /book</tt></td></tr><tr><td>Tail</td><td><tt class="literal">echo $aa:t</tt></td><td><tt class="literal">num.c /book/chap.ps</tt></td></tr><tr><td>Global tail</td><td><tt class="literal">echo $aa:gt</tt></td><td><tt class="literal">num.c chap.ps</tt></td></tr><tr><td>Extension</td><td><tt class="literal">echo $aa:e</tt></td><td><tt class="literal">c /book/chap.ps</tt></td></tr><tr><td>Global extension</td><td><tt class="literal">echo $aa:ge</tt></td><td><tt class="literal">c ps</tt></td></tr></table><p></div><a name="unut-ch-5-sect-3.2.2" /><div class="sect3"><h3 class="sect3">5.3.2.2. Examples using quoting modifiers</h3><blockquote><pre class="code">% <tt class="userinput"><b>set a="[a-z]*" A="[A-Z]*"</b></tt>% <tt class="userinput"><b>echo "$a" "$A"</b></tt>[a-z]* [A-Z]*% <tt class="userinput"><b>echo $a $A</b></tt>at cc m4 Book Doc% <tt class="userinput"><b>echo $a:x $A</b></tt>[a-z]* Book Doc% <tt class="userinput"><b>set d=($a:q $A:q)</b></tt>% <tt class="userinput"><b>echo $d</b></tt>at cc m4 Book Doc% <tt class="userinput"><b>echo $d:q</b></tt>[a-z]* [A-Z]*% <tt class="userinput"><b>echo $d[1] +++ $d[2]</b></tt>at cc m4 +++ Book Doc% <tt class="userinput"><b>echo $d[1]:q</b></tt>[a-z]*</pre></blockquote></div></div><a name="unut-ch-5-sect-3.3" /><div class="sect2"><h3 class="sect2">5.3.3. Predefined Shell Variables</h3><p><a name="IXT-5-122928" /><a name="IXT-5-122929" /><a name="IXT-5-122930" /><a name="IXT-5-122931" />Variables can be set in one of two ways, by assigning a value:</p><blockquote><pre class="code">set <em class="replaceable"><tt>var</em>=<em class="replaceable">value</tt></em></pre></blockquote><p>or by simply turning them on:</p><blockquote><pre class="code">set <em class="replaceable"><tt>var</tt></em></pre></blockquote><p>In the following table, variables that accept values are shown with the equals sign followed by the type of value they accept;the value is then described.  (Note, however, that variablessuch as <tt class="literal">argv</tt>, <tt class="literal">cwd</tt>,or <tt class="literal">status</tt> are never explicitly assigned.)For variables that are turned onor off, the table describes what they do when set.The C shell automatically sets the variables <tt class="literal">argv</tt>,<tt class="literal">cwd</tt>,<tt class="literal">home</tt>,<tt class="literal">path</tt>,<tt class="literal">prompt</tt>,<tt class="literal">shell</tt>,<tt class="literal">status</tt>,<tt class="literal">term</tt>,and<tt class="literal">user</tt>.</p><table border="1" cellpadding="3"><tr><th><em class="emphasis">Variable</em></th><th><em class="emphasis">Description</em></th></tr><tr><td><tt class="literal">argv=(</tt><em class="replaceable"><tt>args</tt></em><tt class="literal">)</tt></td><td><p>List of arguments passed to current command;default is <tt class="literal">()</tt>.<a name="IXT-5-122932" /></p></td></tr><tr><td><tt class="literal">cdpath=(</tt><em class="replaceable"><tt>dirs</tt></em><tt class="literal">)</tt></td><td><p>List of alternate directories to search when locating arguments for<a name="IXT-5-122933" /><tt class="literal">cd</tt>, <tt class="literal">popd</tt>, or <tt class="literal">pushd</tt>.</p></td></tr><tr><td><tt class="literal">cwd=</tt><em class="replaceable"><tt>dir</tt></em></td><td><p>Full pathname of<a name="IXT-5-122934" />current directory.</p></td></tr><tr><td><tt class="literal">echo</tt></td><td><p>Redisplay each command line before execution; same as<a name="IXT-5-122935" /><tt class="literal">csh -x</tt> command.</p></td></tr><tr><td><tt class="literal">fignore=(</tt><em class="replaceable"><tt>chars</tt></em><tt class="literal">)</tt></td><td><p>List of filename suffixes to ignore during <a name="IXT-5-122936" />filename completion (see <tt class="literal">filec</tt>).</p></td></tr><tr><td><tt class="literal">filec</tt></td><td><p>If set, a filename that is partially typed on the command line<a name="IXT-5-122937" />

⌨️ 快捷键说明

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