home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / gnu / man / cat1 / sh.0 < prev    next >
Text File  |  1993-12-08  |  41KB  |  782 lines

  1.  
  2.  
  3.  sh(C)                         06 January 1993                          sh(C)
  4.  
  5.  
  6.  _N_a_m_e
  7.  
  8.     sh - invoke the shell command interpreter
  9.  
  10.  _S_y_n_t_a_x
  11.  
  12.     sshh [ --aacceeiikknnrrssttuuvvxx ] [ _aa_rr_gg_ss ]
  13.  
  14.  _D_e_s_c_r_i_p_t_i_o_n
  15.  
  16.     The shell is the standard command programming language that executes com-
  17.     mands read from a terminal or a file.  See ``Invocation'' below for the
  18.     meaning of arguments to the shell.
  19.  
  20.     _C_o_m_m_a_n_d_s
  21.  
  22.     A _s_i_m_p_l_e-_c_o_m_m_a_n_d is a sequence of nonblank _w_o_r_d_s separated by _b_l_a_n_k_s (a
  23.     _b_l_a_n_k is a tab or a space).  The first word specifies the name of the
  24.     command to be executed.  Except as specified below, the remaining words
  25.     are passed as arguments to the invoked command.  The command name is
  26.     passed as argument 0 (see eexxeecc(S)).  The _v_a_l_u_e of a simple-command is its
  27.     exit status if it terminates normally, or (octal) 1000+_ss_tt_aa_tt_uu_ss if it ter-
  28.     minates abnormally. See ssiiggnnaall(S) for a list of status values.
  29.  
  30.     A _p_i_p_e_l_i_n_e is a sequence of one or more _c_o_m_m_a_n_d_s separated by a vertical
  31.     bar (||).  (The caret (^^), is an obsolete synonym for the vertical bar and
  32.     should not be used in a pipeline.  Scripts that use ``^'' for pipelines
  33.     are incompatible with the Korn shell.)  The standard output of each com-
  34.     mand but the last is connected by a ppiippee(S) to the standard input of the
  35.     next command.  Each command is run as a separate process; the shell waits
  36.     for the last command to terminate.
  37.  
  38.     A _l_i_s_t is a sequence of one or more pipelines separated by ;;, &&, &&&&, or
  39.     ||||, and optionally terminated by ;; or &&.  Of these four symbols, ;; and &&
  40.     have equal precedence, which is lower than that of &&&& and ||||.  The sym-
  41.     bols &&&& and |||| also have equal precedence.  A semicolon (;;) causes
  42.     sequential execution of the preceding pipeline; an ampersand (&&) causes
  43.     asynchronous execution of the preceding pipeline (that is, the shell does
  44.     _n_o_t wait for that pipeline to finish).  The symbol &&&& (||||) causes the
  45.     _l_i_s_t following it to be executed only if the preceding pipeline returns a
  46.     zero (nonzero) exit status.  An arbitrary number of newlines may appear
  47.     in a _l_i_s_t, instead of semicolons, to delimit commands.
  48.  
  49.     A _c_o_m_m_a_n_d is either a simple-command or one of the following commands.
  50.     Unless otherwise stated, the value returned by a command is that of the
  51.     last simple-command executed in the command:
  52.  
  53.     ffoorr _nn_aa_mm_ee [ iinn _ww_oo_rr_dd ... ]
  54.     ddoo
  55.             _ll_ii_ss_tt
  56.     ddoonnee
  57.  
  58.     Each time a ffoorr command is executed, _nn_aa_mm_ee is set to the next _ww_oo_rr_dd taken
  59.     from the iinn _ww_oo_rr_dd list.  If iinn _ww_oo_rr_dd is omitted, then the ffoorr command exe-
  60.     cutes the ddoo _ll_ii_ss_tt once for each positional parameter that is set (see
  61.     ``Parameter substitution'' below).  Execution ends when there are no more
  62.     words in the list.
  63.  
  64.  
  65.     ccaassee _ww_oo_rr_dd iinn
  66.     [ _pp_aa_tt_tt_ee_rr_nn [ | _pp_aa_tt_tt_ee_rr_nn ] ... )) _ll_ii_ss_tt
  67.                                     ;;;; ]
  68.     eessaacc
  69.  
  70.     A ccaassee command executes the _ll_ii_ss_tt associated with the first _pp_aa_tt_tt_ee_rr_nn that
  71.     matches _ww_oo_rr_dd.  The form of the patterns is the same as that used for
  72.     filename generation (see ``Filename generation'' below).
  73.  
  74.  
  75.     iiff _ll_ii_ss_tt
  76.     tthheenn
  77.             _ll_ii_ss_tt
  78.     [ eelliiff _ll_ii_ss_tt tthheenn
  79.             _ll_ii_ss_tt ]
  80.     ...
  81.     [ eellssee _ll_ii_ss_tt ]
  82.     ffii
  83.  
  84.     The _ll_ii_ss_tt following iiff is executed and, if it returns a zero exit status,
  85.     the _ll_ii_ss_tt following the first tthheenn is executed.  Otherwise, the _ll_ii_ss_tt fol-
  86.     lowing eelliiff is executed and, if its value is zero, the _ll_ii_ss_tt following the
  87.     next tthheenn is executed.  Failing that, the eellssee _ll_ii_ss_tt is executed.  If no
  88.     eellssee _ll_ii_ss_tt or tthheenn _ll_ii_ss_tt is executed, then the iiff command returns a zero
  89.     exit status.
  90.  
  91.  
  92.     wwhhiillee _ll_ii_ss_tt
  93.     ddoo
  94.             _ll_ii_ss_tt
  95.     ddoonnee
  96.  
  97.     A wwhhiillee command repeatedly executes the wwhhiillee _ll_ii_ss_tt and, if the exit
  98.     status of the last command in the list is zero, executes the ddoo _ll_ii_ss_tt;
  99.     otherwise the loop terminates.  If no commands in the ddoo _ll_ii_ss_tt are exe-
  100.     cuted, then the wwhhiillee command returns a zero exit status; uunnttiill may be
  101.     used in place of wwhhiillee to negate the loop termination test.
  102.  
  103.  
  104.     uunnttiill _ll_ii_ss_tt
  105.     ddoo
  106.             _ll_ii_ss_tt
  107.     ddoonnee
  108.  
  109.     uunnttiill is similar to wwhhiillee, only uunnttiill continues execution until the first
  110.     _ll_ii_ss_tt returns a zero exit status.  In other words, uunnttiill works until the
  111.     test condition succeeds (it works the whole time the command is failing);
  112.     wwhhiillee works until the test condition fails. uunnttiill is useful when you are
  113.     waiting for a particular event to occur.
  114.  
  115.  
  116.     ((_ll_ii_ss_tt))
  117.  
  118.     Executes _ll_ii_ss_tt in a subshell.
  119.  
  120.  
  121.     {{_ll_ii_ss_tt;;}}
  122.  
  123.     _ll_ii_ss_tt is simply executed.
  124.  
  125.  
  126.     _nn_aa_mm_ee (()) {{_ll_ii_ss_tt;;}}
  127.  
  128.     Define a function which is referenced by _nn_aa_mm_ee.  The body of functions is
  129.     the _ll_ii_ss_tt of commands between {{ and }}.  Execution of functions is
  130.     described later (see ``Execution''.)
  131.  
  132.     The following words are recognized only as the first word of a command
  133.     and when not quoted:
  134.  
  135.     iiff      tthheenn    eellssee    eelliiff    ffii      ccaassee    eessaacc
  136.     ffoorr     wwhhiillee   uunnttiill   ddoo      ddoonnee    {{       }}
  137.  
  138.     _C_o_m_m_e_n_t_s
  139.  
  140.     A word beginning with ## causes that word and all the following characters
  141.     up to a newline to be ignored.
  142.  
  143.     _C_o_m_m_a_n_d _s_u_b_s_t_i_t_u_t_i_o_n
  144.  
  145.     The standard output from a command enclosed between grave accents ( `` `` )
  146.     may be used as part or all of a word; trailing newlines are removed.
  147.  
  148.     No interpretation is done on the command string before the string is
  149.     read, except to remove backslashes (\\) used to escape other characters.
  150.     Backslashes may be used to escape grave accents (``) or other backslashes
  151.     and are removed before the command string is read.  Escaping grave
  152.     accents allows nested command substitution.  If the command substitution
  153.     lies within a pair of double quotes ( "" `` ...... `` "" ), backslashes used to
  154.     escape a double quote (\\"") will be removed; otherwise, they will be left
  155.     intact.
  156.  
  157.     If a backslash is used to escape a newline character, both the backslash
  158.     and the newline are removed (see the section on ``Quoting'').  In addi-
  159.     tion, backslashes used to escape dollar signs ( \\$$ ) are removed.  Since
  160.     no interpretation is done on the command string before it is read,
  161.     inserting a backslash to escape a dollar sign has no effect.  Backslashes
  162.     that precede characters other than \\, ``, "", nneewwlliinnee, and $$ are left
  163.     intact.
  164.  
  165.     _P_a_r_a_m_e_t_e_r _s_u_b_s_t_i_t_u_t_i_o_n
  166.  
  167.     The character $$ is used to introduce substitutable _p_a_r_a_m_e_t_e_r_s.  There are
  168.     two types of parameters, positional and keyword.  If _p_a_r_a_m_e_t_e_r is a
  169.     digit, it is a positional parameter. Positional paramete