📄 ch47_01.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 47] C Shell Programming...NOT</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:55: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="part08.htm"TITLE="VIII. Shell Programming "><LINKREL="prev"HREF="ch46_10.htm"TITLE="46.10 A Portable echo Command "><LINKREL="next"HREF="ch47_02.htm"TITLE="47.2 C Shell Programming Considered Harmful "></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="ch46_10.htm"TITLE="46.10 A Portable echo Command "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 46.10 A Portable echo Command "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 47</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch47_02.htm"TITLE="47.2 C Shell Programming Considered Harmful "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 47.2 C Shell Programming Considered Harmful "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="CHAPTER"><H1CLASS="chapter"><ACLASS="title"NAME="UPT-CHP-47">47. C Shell Programming...NOT</A></H1><DIVCLASS="htmltoc"><P><B>Contents:</B><BR><ACLASS="sect1"HREF="#UPT-ART-8016"TITLE="47.1 Why Not? ">Why Not? </A><BR><ACLASS="sect1"HREF="ch47_02.htm"TITLE="47.2 C Shell Programming Considered Harmful ">C Shell Programming Considered Harmful </A><BR><ACLASS="sect1"HREF="ch47_03.htm"TITLE="47.3 Conditional Statements with if ">Conditional Statements with if </A><BR><ACLASS="sect1"HREF="ch47_04.htm"TITLE="47.4 C Shell Variable Operators and Expressions ">C Shell Variable Operators and Expressions </A><BR><ACLASS="sect1"HREF="ch47_05.htm"TITLE="47.5 Using C Shell Arrays ">Using C Shell Arrays </A><BR><ACLASS="sect1"HREF="ch47_06.htm"TITLE="47.6 Quick Reference: C Shell switch Statement ">Quick Reference: C Shell switch Statement </A></P><P></P></DIV><DIVCLASS="sect1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-8016">47.1 Why Not? </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-56003"></A><ACLASS="indexterm"NAME="AUTOID-56006"></A><ACLASS="indexterm"NAME="AUTOID-56009"></A><ACLASS="indexterm"NAME="AUTOID-56012"></A><ACLASS="indexterm"NAME="AUTOID-56015"></A><ACLASS="indexterm"NAME="AUTOID-56018"></A><ACLASS="indexterm"NAME="AUTOID-56021"></A><ACLASS="indexterm"NAME="AUTOID-56024"></A>We use the C shell for many of the interactive examples in this book.History, aliases, and so forth make it far superior to theoriginal Bourne shell for interactive use.(The newer Korn Shell combines features from both.And <EMCLASS="emphasis">bash</EM> adds even more.)However, <EMCLASS="emphasis">csh</EM> has some major drawbacks when it comes to shellprogramming.</P><PCLASS="para">Tom Christiansen explains some of the reasons in his famous tract "C ShellProgramming Considered Harmful," which we've included as article<ACLASS="xref"HREF="ch47_02.htm"TITLE="C Shell Programming Considered Harmful ">47.2</A>.If you find yourself bristling at the tone of this article, rememberthat it was originally posted to<SPANCLASS="link">Usenet (<ACLASS="linkend"HREF="ch01_33.htm"TITLE="UNIX Networking and Communications ">1.33</A>)</SPAN>.It is an example of thatart form known colloquially as a "flame."As flames go, this isactually fairly mild.</P><PCLASS="para">We agree with most of Tom's criticisms, and makeno attempt to teach C shell programming in this book. We do howeverinclude a few quick-reference style articles on constructs that weuse in articles about the C shell's <SPANCLASS="link">setup files (<ACLASS="linkend"HREF="ch02_02.htm"TITLE="Shell Setup Files-Which, Where, and Why ">2.2</A>)</SPAN>,since they are in effect nothing but C shell programs read when theshell starts up. Specifically, we cover the syntax of <SPANCLASS="link"><EMCLASS="emphasis">if</EM> (<ACLASS="linkend"HREF="ch47_03.htm"TITLE="Conditional Statements with if ">47.3</A>)</SPAN>and<SPANCLASS="link"><EMCLASS="emphasis">switch</EM> (<ACLASS="linkend"HREF="ch47_06.htm"TITLE="Quick Reference: C Shell switch Statement ">47.6</A>)</SPAN>statements.We explain how to set and use C shell<SPANCLASS="link">arrays (<ACLASS="linkend"HREF="ch47_05.htm"TITLE="Using C Shell Arrays ">47.5</A>)</SPAN>-a nice C shell feature that, we admit <CODECLASS="literal">:-)</CODE>, the Bourne shell is missing.(The<SPANCLASS="link"><EMCLASS="emphasis">foreach</EM> (<ACLASS="linkend"HREF="ch09_11.htm"TITLE="Repeating a Command with a foreach Loop ">9.11</A>)</SPAN>loop, covered in another chapter, could be put in this chapter, too.)C shell<SPANCLASS="link">expressions (<ACLASS="linkend"HREF="ch47_04.htm"TITLE="C Shell Variable Operators and Expressions ">47.4</A>)</SPAN>(like <CODECLASS="literal">$?prompt</CODE>) can be used in <EMCLASS="emphasis">if</EM>, <EMCLASS="emphasis">switch</EM>,and <EMCLASS="emphasis">foreach</EM>.<ACLASS="indexterm"NAME="AUTOID-56047"></A></P><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">TOR</SPAN>, <SPANCLASS="authorinitials">JP</SPAN></P></DIV></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="ch46_10.htm"TITLE="46.10 A Portable echo Command "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 46.10 A Portable echo Command "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="ch47_02.htm"TITLE="47.2 C Shell Programming Considered Harmful "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 47.2 C Shell Programming Considered Harmful "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">46.10 A Portable echo Command </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">47.2 C Shell Programming Considered Harmful </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 + -