442 lines
5.5 KiB
HTML
442 lines
5.5 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Advanced Topics</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="HOME"
|
|
TITLE="Advanced Bash-Scripting Guide"
|
|
HREF="index.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Analyzing a System Script"
|
|
HREF="sysscripts.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Regular Expressions"
|
|
HREF="regexp.html"></HEAD
|
|
><BODY
|
|
CLASS="PART"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>Advanced Bash-Scripting Guide: </TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="sysscripts.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="regexp.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="PART"
|
|
><A
|
|
NAME="PART5"
|
|
></A
|
|
><DIV
|
|
CLASS="TITLEPAGE"
|
|
><H1
|
|
CLASS="TITLE"
|
|
>Part 5. Advanced Topics</H1
|
|
><DIV
|
|
CLASS="PARTINTRO"
|
|
><A
|
|
NAME="AEN17110"
|
|
></A
|
|
><P
|
|
>At this point, we are ready to delve into certain of the
|
|
difficult and unusual aspects of scripting. Along the way, we
|
|
will attempt to <SPAN
|
|
CLASS="QUOTE"
|
|
>"push the envelope"</SPAN
|
|
> in various
|
|
ways and examine <I
|
|
CLASS="FIRSTTERM"
|
|
>boundary conditions</I
|
|
>
|
|
(what happens when we move into uncharted territory?).</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="TOC"
|
|
><DL
|
|
><DT
|
|
><B
|
|
>Table of Contents</B
|
|
></DT
|
|
><DT
|
|
>18. <A
|
|
HREF="regexp.html"
|
|
>Regular Expressions</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>18.1. <A
|
|
HREF="x17129.html"
|
|
>A Brief Introduction to Regular Expressions</A
|
|
></DT
|
|
><DT
|
|
>18.2. <A
|
|
HREF="globbingref.html"
|
|
>Globbing</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>19. <A
|
|
HREF="here-docs.html"
|
|
>Here Documents</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>19.1. <A
|
|
HREF="x17837.html"
|
|
>Here Strings</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>20. <A
|
|
HREF="io-redirection.html"
|
|
>I/O Redirection</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>20.1. <A
|
|
HREF="x17974.html"
|
|
>Using <I
|
|
CLASS="FIRSTTERM"
|
|
>exec</I
|
|
></A
|
|
></DT
|
|
><DT
|
|
>20.2. <A
|
|
HREF="redircb.html"
|
|
>Redirecting Code Blocks</A
|
|
></DT
|
|
><DT
|
|
>20.3. <A
|
|
HREF="redirapps.html"
|
|
>Applications</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>21. <A
|
|
HREF="subshells.html"
|
|
>Subshells</A
|
|
></DT
|
|
><DT
|
|
>22. <A
|
|
HREF="restricted-sh.html"
|
|
>Restricted Shells</A
|
|
></DT
|
|
><DT
|
|
>23. <A
|
|
HREF="process-sub.html"
|
|
>Process Substitution</A
|
|
></DT
|
|
><DT
|
|
>24. <A
|
|
HREF="functions.html"
|
|
>Functions</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>24.1. <A
|
|
HREF="complexfunct.html"
|
|
>Complex Functions and Function Complexities</A
|
|
></DT
|
|
><DT
|
|
>24.2. <A
|
|
HREF="localvar.html"
|
|
>Local Variables</A
|
|
></DT
|
|
><DT
|
|
>24.3. <A
|
|
HREF="recurnolocvar.html"
|
|
>Recursion Without Local Variables</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>25. <A
|
|
HREF="aliases.html"
|
|
>Aliases</A
|
|
></DT
|
|
><DT
|
|
>26. <A
|
|
HREF="list-cons.html"
|
|
>List Constructs</A
|
|
></DT
|
|
><DT
|
|
>27. <A
|
|
HREF="arrays.html"
|
|
>Arrays</A
|
|
></DT
|
|
><DT
|
|
>28. <A
|
|
HREF="ivr.html"
|
|
>Indirect References</A
|
|
></DT
|
|
><DT
|
|
>29. <A
|
|
HREF="devproc.html"
|
|
><TT
|
|
CLASS="FILENAME"
|
|
>/dev</TT
|
|
> and <TT
|
|
CLASS="FILENAME"
|
|
>/proc</TT
|
|
></A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>29.1. <A
|
|
HREF="devref1.html"
|
|
><TT
|
|
CLASS="FILENAME"
|
|
>/dev</TT
|
|
></A
|
|
></DT
|
|
><DT
|
|
>29.2. <A
|
|
HREF="procref1.html"
|
|
><TT
|
|
CLASS="FILENAME"
|
|
>/proc</TT
|
|
></A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>30. <A
|
|
HREF="networkprogramming.html"
|
|
>Network Programming</A
|
|
></DT
|
|
><DT
|
|
>31. <A
|
|
HREF="zeros.html"
|
|
>Of Zeros and Nulls</A
|
|
></DT
|
|
><DT
|
|
>32. <A
|
|
HREF="debugging.html"
|
|
>Debugging</A
|
|
></DT
|
|
><DT
|
|
>33. <A
|
|
HREF="options.html"
|
|
>Options</A
|
|
></DT
|
|
><DT
|
|
>34. <A
|
|
HREF="gotchas.html"
|
|
>Gotchas</A
|
|
></DT
|
|
><DT
|
|
>35. <A
|
|
HREF="scrstyle.html"
|
|
>Scripting With Style</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>35.1. <A
|
|
HREF="unofficialst.html"
|
|
>Unofficial Shell Scripting Stylesheet</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>36. <A
|
|
HREF="miscellany.html"
|
|
>Miscellany</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>36.1. <A
|
|
HREF="intandnonint.html"
|
|
>Interactive and non-interactive shells and scripts</A
|
|
></DT
|
|
><DT
|
|
>36.2. <A
|
|
HREF="wrapper.html"
|
|
>Shell Wrappers</A
|
|
></DT
|
|
><DT
|
|
>36.3. <A
|
|
HREF="testsandcomparisons.html"
|
|
>Tests and Comparisons: Alternatives</A
|
|
></DT
|
|
><DT
|
|
>36.4. <A
|
|
HREF="recursionsct.html"
|
|
>Recursion: a script calling itself</A
|
|
></DT
|
|
><DT
|
|
>36.5. <A
|
|
HREF="colorizing.html"
|
|
><SPAN
|
|
CLASS="QUOTE"
|
|
>"Colorizing"</SPAN
|
|
> Scripts</A
|
|
></DT
|
|
><DT
|
|
>36.6. <A
|
|
HREF="optimizations.html"
|
|
>Optimizations</A
|
|
></DT
|
|
><DT
|
|
>36.7. <A
|
|
HREF="assortedtips.html"
|
|
>Assorted Tips</A
|
|
></DT
|
|
><DT
|
|
>36.8. <A
|
|
HREF="securityissues.html"
|
|
>Security Issues</A
|
|
></DT
|
|
><DT
|
|
>36.9. <A
|
|
HREF="portabilityissues.html"
|
|
>Portability Issues</A
|
|
></DT
|
|
><DT
|
|
>36.10. <A
|
|
HREF="winscript.html"
|
|
>Shell Scripting Under Windows</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>37. <A
|
|
HREF="bash2.html"
|
|
>Bash, versions 2, 3, and 4</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>37.1. <A
|
|
HREF="bashver2.html"
|
|
>Bash, version 2</A
|
|
></DT
|
|
><DT
|
|
>37.2. <A
|
|
HREF="bashver3.html"
|
|
>Bash, version 3</A
|
|
></DT
|
|
><DT
|
|
>37.3. <A
|
|
HREF="bashver4.html"
|
|
>Bash, version 4</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
></DL
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="sysscripts.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="regexp.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Analyzing a System Script</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Regular Expressions</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |