SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
Syntax
           Variables
Built-in Commands
   Awk, Sed et Co.




  Scripting with Sh

         Nicolas Ledez


    15 septembre 2008




     Nicolas Ledez     Scripting with Sh
Syntax
                                   Variables
                        Built-in Commands
                           Awk, Sed et Co.


Outline


  1   Syntax

  2   Variables

  3   Built-in Commands

  4   Awk, Sed et Co.




                             Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                           Variables   Quoting
                Built-in Commands      Command Forms
                   Awk, Sed et Co.     Redirection Forms


Filename Metacharacters



   String       Meaning
    *           Match any string of zero or more characters
    ?           Match any single character
    [abc...]    Match any one of the enclosed characters ; a
                hyphen can specify a range (e.g., a–z, A–Z,
                0–9)
    [!abc...]   Match any character not enclosed as above




                     Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                            Variables   Quoting
                 Built-in Commands      Command Forms
                    Awk, Sed et Co.     Redirection Forms


Filename Metacharacters - examples




   String    Meaning
    new*     Match new new.1
    ch?      Match ch9 but not ch10
    [D-R]*   Match files that begin with uppercase D through R




                      Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                           Variables   Quoting
                Built-in Commands      Command Forms
                   Awk, Sed et Co.     Redirection Forms


Quoting

   Character                       Meaning
    ;                              Command separator
    &                              Background execution
    ( )                            Command grouping
    |                              Pipe
    < > &                          Redirection symbols
    * ? [ ] ~ + - @ !              Filename metacharacters
    " ’                           Used in quoting other characters
    ‘                              Command substitution
    $                              Variable substitution
   space tab newline               Word separators


                     Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                              Variables   Quoting
                   Built-in Commands      Command Forms
                      Awk, Sed et Co.     Redirection Forms


Quoting - examples



   $ echo ’Single quotes "protect" double quotes’
   Single quotes "protect" double quotes
   $ echo "Well, isn’t that "special" ?"
   Well, isn’t that "special" ?
   $ echo "You have ‘ls | wc -l‘ files in ‘pwd‘"
   You have 43 files in /home/bob




                        Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                            Variables   Quoting
                 Built-in Commands      Command Forms
                    Awk, Sed et Co.     Redirection Forms


Command Forms 1/2

   cmd &                            Execute cmd in background
   cmd1 ; cmd2                      Command sequence ; execute
                                    multiple cmds on the same line
   { cmd1 ; cmd2 ; }                Execute commands as a group
                                    in the current shell
   (cmd1 ; cmd2)                    Execute commands as a group
                                    in a subshell
   cmd1 | cmd2                      Pipe ; use output from cmd1 as
                                    input to cmd2
   cmd1 ‘cmd2‘                      Command substitution ; use
                                    cmd2 output as arguments to
                                    cmd1


                      Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                             Variables   Quoting
                  Built-in Commands      Command Forms
                     Awk, Sed et Co.     Redirection Forms


Command Forms 2/2


   cmd1 && cmd2         AND ; execute cmd1 and then (if
                        cmd1 succeeds) cmd2. This is a
                        “short-circuit” operation ; cmd2
                        is never executed if cmd1 fails
   cmd1 || cmd2         OR ; execute either cmd1 or
                        (if cmd1 fails) cmd2. This is a
                        “short-circuit” operation ; cmd2
                        is never executed if cmd1 suc-
                        ceeds




                       Nicolas Ledez     Scripting with Sh
Command Forms - examples
  $ nroff file > file.txt &
  Format in the background
  $ cd ; ls
  Execute sequentially
  $ (date ; who ; pwd) > logfile
  All output is redirected
  $ sort file | pr -3 | lp
  Sort file, page output, then print
  $ vi ‘grep -l ifdef *.c‘
  Edit files found by grep
  $ egrep ’(yes|no)’ ‘cat list‘
  Specify a list of files to search
  $ grep XX file && lp file
  Print file if it contains the pattern
  $ grep XX file || echo "XX not found"
  otherwise, echo an error message
Syntax    Filename Metacharacters
                              Variables   Quoting
                   Built-in Commands      Command Forms
                      Awk, Sed et Co.     Redirection Forms


Redirection Forms




   File De-   Name                        Common                    Typical Default
   scriptor                               Abbreviation
   0          Standard input              stdin                     Keyboard
   1          Standard output             stdout                    Terminal
   2          Standard error              stderr                    Terminal




                        Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                                  Variables   Quoting
                       Built-in Commands      Command Forms
                          Awk, Sed et Co.     Redirection Forms


Redirection Forms - Simple redirection

   $ cmd > file
   Send output of cmd to file (overwrite)
   $ cmd » file
   Send output of cmd to file (append)
   $ cmd < file
   Take input for cmd from file
   $ cmd « text
   The contents of the shell script up to a line identical to text
   become the standard input for cmd (text can be stored in
   a shell variable)



                            Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                            Variables   Quoting
                 Built-in Commands      Command Forms
                    Awk, Sed et Co.     Redirection Forms


Redirection Forms - Redirection using file descriptors


    cmd >&n    Send cmd output to file descriptor n
    cmd m>&n   Same, except that output that would normally
               go to file descriptor m is sent to file descriptor
               n instead
    cmd >&-    Close standard output
    cmd <&n    Take input for cmd from file descriptor n
    cmd m<&n   Same, except that input that would normally
               come from file descriptor m comes from file
               descriptor n instead
    cmd <&-    Close standard input



                      Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                           Variables   Quoting
                Built-in Commands      Command Forms
                   Awk, Sed et Co.     Redirection Forms


Redirection Forms - examples 1/2

    $ cat part1 > book
    $ cat part2 part3 >> book
    $ mail tim < report
    $ sed ’s/^/XX /g’ << "END_ARCHIVE"
    > echo toto $titi
    > END_ARCHIVE
    XX echo toto $titi
    $ export titi=qsdf
    $ sed ’s/^/XX /g’ << END_ARCHIVE
    > echo toto $titi
    > END_ARCHIVE
    XX echo toto qsdf

                     Nicolas Ledez     Scripting with Sh
Syntax    Filename Metacharacters
                               Variables   Quoting
                    Built-in Commands      Command Forms
                       Awk, Sed et Co.     Redirection Forms


Redirection Forms - examples 2/2



    $ echo "Usage error: see administrator" 1>&2
   To redirect standard output to standard error
    $ find / -print > filelist 2>no_access
   The following command sends output (files found) to filelist and
   error messages (inaccessible files) to file no_access




                         Nicolas Ledez     Scripting with Sh
Syntax
                                        Variable Substitution
                            Variables
                                        Built-in Shell Variables
                 Built-in Commands
                                        Other Shell Variables
                    Awk, Sed et Co.


Variable Substitution

   String                 Meaning
    var=value             Set each variable var to a value
    $var ${var}           Use value of var
    ${var:-value}         Use var if set ; otherwise, use value
    ${var:=value}         Use var if set ; otherwise, use value
                          and assign value to var
    ${var:?value}         se var if set ; otherwise, print value and
                          exit (if not interactive). If value isn’t
                          supplied, print the phrase "parameter
                          null or not set."
    ${var:+value}         Use value if var is set ; otherwise, use
                          nothing


                      Nicolas Ledez     Scripting with Sh
Syntax
                                              Variable Substitution
                                  Variables
                                              Built-in Shell Variables
                       Built-in Commands
                                              Other Shell Variables
                          Awk, Sed et Co.


Variable Substitution 1/2

     $ u=up d=down blank=
   Assign values to three variables (last is null)
     $ echo ${u}root
     uproot
   Braces are needed here
     $ echo ${u-$d}
     up
   Display value of u or d ; since u is set, it’s printed
     $ echo ${tmp-‘date‘}
     Thu Feb 4 15:03:46 EST 1993
   If tmp is not set, the date command is executed


                            Nicolas Ledez     Scripting with Sh
Syntax
                                              Variable Substitution
                                  Variables
                                              Built-in Shell Variables
                       Built-in Commands
                                              Other Shell Variables
                          Awk, Sed et Co.


Variable Substitution 1/2


    $ u=up d=down blank=
    $ echo ${blank="no data"}
   blank is set, so it is printed (a blank line)
    $ echo ${blank:="no data"}
    no data
   blank is set but null, so the string is printed
    $ echo $blank
    no data
   blank now has a new value




                            Nicolas Ledez     Scripting with Sh
Syntax
                                            Variable Substitution
                                Variables
                                            Built-in Shell Variables
                     Built-in Commands
                                            Other Shell Variables
                        Awk, Sed et Co.


Built-in Shell Variables 1/2


   String   Meaning
    $#      Number of command-line arguments
    $-      Options currently in effect (arguments
            supplied to sh or to set)
    $?      Exit value of last executed command
    $$      Process number of current process
    $!      Process number of last background
            command




                          Nicolas Ledez     Scripting with Sh
Syntax
                                         Variable Substitution
                             Variables
                                         Built-in Shell Variables
                  Built-in Commands
                                         Other Shell Variables
                     Awk, Sed et Co.


Built-in Shell Variables 2/2

   String     Meaning
    $0        First word ; that is, command name.
              This will have the full path name if it
              was found via a PATH search
    $n        Individual arguments on command
              line (positional parameters, n = 1–9).
    $*, $@    All arguments on command line
              ($1 $2 ...)
    "$*"      All arguments on command line as
              one string ("$1 $2...")
    "$@"      All arguments on command line, indi-
              vidually quoted ("$1" "$2" ...)


                       Nicolas Ledez     Scripting with Sh
Syntax
                                         Variable Substitution
                             Variables
                                         Built-in Shell Variables
                  Built-in Commands
                                         Other Shell Variables
                     Awk, Sed et Co.


Other Shell Variables 1/2

   String            Meaning
    CDPATH=dirs      Directories searched by cd ; allows
                     shortcuts in changing directories ; un-
                     set by default
    HOME=dir         Home directory ; set by login (from
                     /etc/passwd file)
    IFS=’chars’      Input field separators ; default is
                     space, tab, and newline
    LANG=dir         Directory to use for certain language-
                     dependent programs
    MAIL=file        Default file in which to receive mail ;
                     set by login


                       Nicolas Ledez     Scripting with Sh
Syntax
                                          Variable Substitution
                              Variables
                                          Built-in Shell Variables
                   Built-in Commands
                                          Other Shell Variables
                      Awk, Sed et Co.


Other Shell Variables 2/2

   String                Meaning
    MAILCHECK=n          Number of seconds between mail
                         checks ; default is 600 (10 minutes)
    PATH=dirlist         One or more pathnames, delimited by
                         colons, in which to search for com-
                         mands to execute
    PS1=string           Primary prompt string ; default is $
    PS2=string           Secondary prompt (used in multiline
                         commands) ; default is >
    SHELL=file           Name of default shell (e.g., /bin/sh)
    TERM=string          Terminal type


                        Nicolas Ledez     Scripting with Sh
Syntax    Base
                                Variables   Boucle
                     Built-in Commands      Fonction
                        Awk, Sed et Co.     Script


shell-bang # :




  # ! / b i n / sh
  # comment
  ...




                          Nicolas Ledez     Scripting with Sh
Syntax    Base
                                   Variables   Boucle
                        Built-in Commands      Fonction
                           Awk, Sed et Co.     Script


!:
     i f who |   grep r o o t > / dev / n u l l
     then
          echo   r o o t i s c u r r e n t l y logged on
     fi
     i f ! who   | grep r o o t > / dev / n u l l
     then
          echo   r o o t i s n o t c u r r e n t l y logged on
     fi
     i f who |   grep r o o t > / dev / n u l l
     then : #    Do n o t h i n g i f p a t t e r n i s found
     else
          echo   r o o t i s n o t c u r r e n t l y logged on
     fi

                             Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


cd pwd kill sleep time
  $ pwd
  / home / admin
  $ cd / tmp /
  $ pwd
  / tmp
  $ k i l l 19524
  $ date && s l e e p 2 && date
  Mon Aug 13 1 6 : 3 0 : 2 9 CEST 2007
  Mon Aug 13 1 6 : 3 0 : 3 1 CEST 2007
  $ t i m e ( f i n d / tmp >/ dev / n u l l 2>&1)

  real       0m0.002 s
  user       0m0.000 s
  sys        0m0.004 s
                           Nicolas Ledez     Scripting with Sh
Syntax    Base
                                    Variables   Boucle
                         Built-in Commands      Fonction
                            Awk, Sed et Co.     Script


type ulimit umask

  $ t y p e mv read
  mv i s / b i n / mv
  read i s a s h e l l b u i l t i n
  # Turn o f f w r i t e p e r m i s s i o n f o r o t h e r s :
  # Produces f i l e p e r m i s s i o n −rw−rw−r−−
  $ umask 002

  # Turn o f f a l l p e r m i s s i o n s f o r group & o t h e r s :
  # Produces f i l e p e r m i s s i o n −rw−−−−−−−
  $ umask 077

  $ man u l i m i t


                              Nicolas Ledez     Scripting with Sh
Syntax    Base
                                     Variables   Boucle
                          Built-in Commands      Fonction
                             Awk, Sed et Co.     Script


if

     i f [ $ c o u n t e r − l t 10 ]
     then
          number=0 $ c o u n t e r
     else
          number= $ c o u n t e r
     fi

     i f [ ! −d $ d i r ] ; then
          mkdir $ d i r
          chmod 775 $ d i r
     fi



                               Nicolas Ledez     Scripting with Sh
Syntax    Base
                                   Variables   Boucle
                        Built-in Commands      Fonction
                           Awk, Sed et Co.     Script


for
  f i l e _ l i s t =" i n s t a l l _ p e a r l _ h o s t . t x t "
  HOST_OK= ‘ awk ’ /  [ X  ] / { p r i n t $2 } ’ $ f i l e _ l i s t ‘
  HOST_KO= ‘ awk ’ /  [  .  ] / { p r i n t $2 } ’ $ f i l e _ l i s t
  echo " h o s t OK"
  f o r h o s t i n $HOST_OK ; do
          echo $host
          check_tcp −H $host − t 1 −p 10001
  done
  echo " h o s t KO"
  f o r h o s t i n $HOST_KO ; do
          echo $host
          check_tcp −H $host − t 1 −p 10001
  done

                             Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


while




  w h i l e [ − f t o t o ] ; do
          echo Wait
          sleep 1
  done




                           Nicolas Ledez     Scripting with Sh
Syntax    Base
                              Variables   Boucle
                   Built-in Commands      Fonction
                      Awk, Sed et Co.     Script


continue

  f o r i i n ‘ seq 7 ‘ ; do
        i f [ $ i −eq 5 ] ; then
             continue
        fi
        echo $ i
  done
  1
  2
  3
  4
  6
  7


                        Nicolas Ledez     Scripting with Sh
Syntax    Base
                              Variables   Boucle
                   Built-in Commands      Fonction
                      Awk, Sed et Co.     Script


break


  f o r i i n ‘ seq 7 ‘ ; do
        i f [ $ i −eq 5 ] ; then
             break
        fi
        echo $ i
  done
  1
  2
  3
  4



                        Nicolas Ledez     Scripting with Sh
Syntax    Base
                                  Variables   Boucle
                       Built-in Commands      Fonction
                          Awk, Sed et Co.     Script


until




   u n t i l [ − f t o t o ] ; do
          echo Wait
           sleep 1
   done




                            Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


case



  case $1 i n          # Match t h e f i r s t arg
       no | yes ) response = 1 ; ;
       −[ t T ] ) t a b l e =TRUE ; ;
       ∗)         echo " unknown o p t i o n " ; e x i t 1 ; ;
  esac




                           Nicolas Ledez     Scripting with Sh
Syntax    Base
                                Variables   Boucle
                     Built-in Commands      Fonction
                        Awk, Sed et Co.     Script


name()



  count ( ) {
      l s | wc − l
  }
  count
  13




                          Nicolas Ledez     Scripting with Sh
Syntax    Base
                                   Variables   Boucle
                        Built-in Commands      Fonction
                           Awk, Sed et Co.     Script


alias




  a l i a s l l = ’ l s −l a t r ’
  a l i a s l s = ’ l s −−c o l o r =auto ’
  a l i a s omega= ’ cd ~ / p r o j e c t s / omega ’




                             Nicolas Ledez     Scripting with Sh
Syntax    Base
                               Variables   Boucle
                    Built-in Commands      Fonction
                       Awk, Sed et Co.     Script


exit



   i f [ $# −eq 0 ]
   then
        echo " Usage :       $0 [−c ] [−d ] f i l e ( s ) " 1>&2
        exit 1               # Error status
   fi




                         Nicolas Ledez     Scripting with Sh
Syntax    Base
                               Variables   Boucle
                    Built-in Commands      Fonction
                       Awk, Sed et Co.     Script


getopts

  w h i l e g e t o p t s " hzgc : " Option ; do
          case $Option i n
               h ) usage ; e x i t 0 ; ;
               c ) COPY=1 ; HOST=$OPTARG ; ;
               g ) GENERATE=1 ; ;
               ∗ ) echo " Unimplemented o p t i o n chosen . "
               exit 3 ;;
          esac
  done

  shift   ‘ expr $OPTIND − 1 ‘



                         Nicolas Ledez     Scripting with Sh
Syntax    Base
                             Variables   Boucle
                  Built-in Commands      Fonction
                     Awk, Sed et Co.     Script


echo



  user@myhost : ~ $ echo $LC_ALL
  en_US . UTF−8
  user@myhost : ~ $ echo " $LC_ALL "
  en_US . UTF−8
  user@myhost : ~ $ echo ’ $LC_ALL ’
  $LC_ALL




                       Nicolas Ledez     Scripting with Sh
Syntax    Base
                               Variables   Boucle
                    Built-in Commands      Fonction
                       Awk, Sed et Co.     Script


export et eval



  $ command=echo
  $ e x p o r t command
  $ parameters =" d i f f e r e n t parameters "
  $ e x p o r t parameters
  $ e v a l $command $parameters
  d i f f e r e n t parameters




                         Nicolas Ledez     Scripting with Sh
Syntax    Base
                               Variables   Boucle
                    Built-in Commands      Fonction
                       Awk, Sed et Co.     Script


nohup


 nohup - run a command immune to hangups, with output to a
 non-tty
  $ nohup l s
  nohup : appending o u t p u t t o ‘ nohup . out ’
  $ c a t nohup . o u t
  ssh−GKxbwc9627
  ssh−kXMoX18526
  ssh−tEcuR24939




                         Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


read



  $ read f i r s t l a s t address
  Sarah C a l d w e l l 123 Main S t r e e t
  $ echo " $ l a s t , $ f i r s t  n$address "
  C a l d w e l l , Sarah
  123 Main S t r e e t




                           Nicolas Ledez     Scripting with Sh
Syntax    Base
                                  Variables   Boucle
                       Built-in Commands      Fonction
                          Awk, Sed et Co.     Script


return




  Exit the function with status n or with the exit status of the
  previously executed command.
  return




                            Nicolas Ledez     Scripting with Sh
Syntax    Base
                                    Variables   Boucle
                         Built-in Commands      Fonction
                            Awk, Sed et Co.     Script


set


  s e t −vx                       #    Read each command l i n e ;
                                  #    show i t ; execute i t ;
                                  #    show i t again
                                  #    ( w i t h arguments )
  s e t +x                        #    Stop command t r a c i n g
  s e t −o n o c l ob b e r       #    Prevent f i l e o v e r w r i t i n g
  s e t +o n o c l o b b e r      #    Allow f i l e o v e r w r i t i n g
                                  #    again




                               Nicolas Ledez    Scripting with Sh
Syntax    Base
                                  Variables   Boucle
                       Built-in Commands      Fonction
                          Awk, Sed et Co.     Script


shift



   Shift positional arguments (e.g., 2becomes1). If n is given, shift
   to the left n places. Used in while loops to iterate through
   command-line arguments.
   $ shift
   $ shift 2




                            Nicolas Ledez     Scripting with Sh
Syntax    Base
                                  Variables   Boucle
                       Built-in Commands      Fonction
                          Awk, Sed et Co.     Script


test - File Conditions 1/2

  −b f i l e
       file    e x i s t s and i s a b l o c k s p e c i a l f i l e .
  −c f i l e
       file    e x i s t s and i s a c h a r a c t e r s p e c i a l f i l e .
  −d f i l e
       file    e x i s t s and i s a d i r e c t o r y .
  −f f i l e
       file    e x i s t s and i s a r e g u l a r f i l e .
  −g f i l e
       file    e x i s t s , and i t s set−group−i d b i t i s s e t .
  −k f i l e
       file    e x i s t s , and i t s s t i c k y b i t i s s e t .


                            Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


test - File Conditions 2/2
  −p f i l e
       f i l e e x i s t s and i s a named p i p e ( f i f o ) .
  −r f i l e
       f i l e e x i s t s and i s r e a d a b l e .
  −s f i l e
       f i l e e x i s t s and has a s i z e g r e a t e r than zero .
  −t [ n ]
       The open f i l e d e s c r i p t o r n i s a s s o c i a t e d
  −u f i l e
       f i l e e x i s t s , and i t s set−user−i d b i t i s s e t .
  −w f i l e
       f i l e e x i s t s and i s w r i t a b l e .
  −x f i l e
       f i l e e x i s t s and i s e x e c u t a b l e .
                           Nicolas Ledez     Scripting with Sh
Syntax    Base
                                  Variables   Boucle
                       Built-in Commands      Fonction
                          Awk, Sed et Co.     Script


test - String Conditions


  string
       s t r i n g i s not n u l l .
  −n s1
       S t r i n g s1 has nonzero l e n g t h .
  −z s1
       S t r i n g s1 has zero l e n g t h .
  s1 = s2
       S t r i n g s s1 and s2 are i d e n t i c a l .
  s1 ! = s2
       S t r i n g s s1 and s2 are n o t i d e n t i c a l .



                            Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


test - Integer Comparisons

  n1 −eq     n2
      n1     equals n2 .
  n1 −ge     n2
      n1     i s g r e a t e r than o r equal t o n2 .
  n1 −g t    n2
      n1     i s g r e a t e r than n2 .
  n1 −l e    n2
      n1     i s l e s s than o r equal t o n2 .
  n1 − l t   n2
      n1     i s l e s s than n2 .
  n1 −ne     n2
      n1     does n o t equal n2 .


                           Nicolas Ledez     Scripting with Sh
Syntax    Base
                                   Variables   Boucle
                        Built-in Commands      Fonction
                           Awk, Sed et Co.     Script


test - Combined Forms


  ! condition
      True i f c o n d i t i o n i s f a l s e .

  c o n d i t i o n 1 −a c o n d i t i o n 2
         True i f both c o n d i t i o n s are t r u e .

  c o n d i t i o n 1 −o c o n d i t i o n 2
         True i f e i t h e r c o n d i t i o n i s t r u e .




                             Nicolas Ledez     Scripting with Sh
Syntax    Base
                               Variables   Boucle
                    Built-in Commands      Fonction
                       Awk, Sed et Co.     Script


test - Examples
  # While t h e r e are arguments . . .
  w h i l e t e s t $# −g t 0
  # While t h e r e are nonempty arguments . . .
  w h i l e [ −n " $1 " ]
  # I f $count i s l e s s than 1 0 . . .
  i f [ $count − l t 10 ]
  # I f t h e RCS d i r e c t o r y e x i s t s . . .
  i f [ −d RCS ]
  # I f t h e answer i s n o t y . . .
  i f [ " $answer " ! = " y " ]
  # I f t h e f i r s t argument i s n o t a
  # readable f i l e or a r e g u l a r f i l e . . .
  i f [ ! −r " $1 " −o ! − f " $1 " ]

                         Nicolas Ledez     Scripting with Sh
Syntax    Base
                                Variables   Boucle
                     Built-in Commands      Fonction
                        Awk, Sed et Co.     Script


trap




  Remove a $tmp file when the shell program exits, or if the user
  logs out, presses CTRL-C, or does a kill :
  t r a p " rm − f $tmp ; e x i t " 0 1 2 15




                          Nicolas Ledez     Scripting with Sh
Syntax    Base
                                Variables   Boucle
                     Built-in Commands      Fonction
                        Awk, Sed et Co.     Script


wait


  ( / b i n / d f / path / n f s ) & cmdpid=$ !
  t i m e o u t =10
  (
          sleep $timeout
          echo " d f $1 check f a i l e d "
          ( k i l l −9 $cmdpid ) > / dev / n u l l 2>&1
  ) &
  watchdogpid=$ !
  w a i t $cmdpid
  k i l l $watchdogpid >/ dev / n u l l 2>&1



                          Nicolas Ledez     Scripting with Sh
Syntax    Base
                                Variables   Boucle
                     Built-in Commands      Fonction
                        Awk, Sed et Co.     Script


unset


  $ echo $ t o t o

  $ t o t o =qsdf
  $ echo $ t o t o
  qsdf
  $ unset t o t o
  $ echo $ t o t o

  $




                          Nicolas Ledez     Scripting with Sh
Syntax    Base
                                 Variables   Boucle
                      Built-in Commands      Fonction
                         Awk, Sed et Co.     Script


filename




  Put filename in script to launch it




                           Nicolas Ledez     Scripting with Sh
Syntax
                                              Awk
                                  Variables
                                              Sed
                       Built-in Commands
                                              Autres
                          Awk, Sed et Co.


Awk

 awk  ’ { p r i n t $1 } ’ a− f i l e
 awk  ’ { p r i n t $1 " ; " $4 } a− f i l e
 awk  ’ { FS = " ; " } / ^ ’ $ {HOST } ’ / { p r i n t $2 } ’ a− f i l e
 awk −F ’ | ’ ’ { p r i n t $2 } ’ a− f i l e
 awk   ’ /  [ $ {PATTERN }  ] / { p r i n t  $2 } ’ a− f i l e
 awk  ’ { i f ( $1 == t b s p ) { p r i n t $2 } } ’
               t b s p =" $ {TBSP } " a− f i l e
 awk ’ { FS = " : " } / ^ [ ^ # ∗ ] / { p r i n t $1 } ’ a− f i l e
 awk ’ BEGIN { FS = " : " } $6 ~ / ^  / $ /
               { p r i n t " I n / : " , $1 } ’ / e t c / passwd
 awk ’ $3 ~ / : / { p r i n t $1 } ’ a− f i l e



                            Nicolas Ledez     Scripting with Sh
Syntax
                                            Awk
                                Variables
                                            Sed
                     Built-in Commands
                                            Autres
                        Awk, Sed et Co.


Sed




 sed   ’ s / ^ / XX / g ’
 sed   − f $ {MEGASED} $ { f i l e }
 sed   " s / #ENV# / $ { env } / g "
 sed   ’ s / ^KO / / ; s / KO$ / / ’




                          Nicolas Ledez     Scripting with Sh
Syntax
                                              Awk
                                  Variables
                                              Sed
                       Built-in Commands
                                              Autres
                          Awk, Sed et Co.


Autres 1/X


  c a t << "EOF" | ssh $1 / b i n / sh −
  ps −e d f −o comm, args | grep [ h ] t t p d | s o r t −u

  $ {ORACLE_HOME } / b i n / s q l p l u s " / as sysdba " << EOF
  s p o o l $ {ORACLE_BASE } / admin / $ { ORACLE_SID } / c r e a t e / s c o
  EOF

  c a t << EOF | ssh $1 / b i n / sh −
  chown −R $ {ADMCTS_NAME } : $ {ADMCTS_GROUP} $ {HOMEDIR}
  EOF



                            Nicolas Ledez     Scripting with Sh
Syntax
                                        Awk
                            Variables
                                        Sed
                 Built-in Commands
                                        Autres
                    Awk, Sed et Co.


Autres 2/X


  expect << EOF
  spawn ssh − t $1 passwd $ {ADMCTS_NAME}
  expect "New Password : "
  send " $ {ADMCTS_PASSWD }  r "
  expect " Re−e n t e r new Password : "
  send " $ {ADMCTS_PASSWD }  r "
  expect e o f
  EOF




                      Nicolas Ledez     Scripting with Sh
Syntax
                                          Awk
                              Variables
                                          Sed
                   Built-in Commands
                                          Autres
                      Awk, Sed et Co.


Autres 3/X

  c a t << "EOF" | ssh $1 / b i n / bash −
  SITES = / s i t e s

  i f [ −d $SITES ] ; then
     cd $SITES
     f o r s i t e i n ∗ ; do
        NB_PROC= ‘ ps −e d f | grep $ s i t e | grep −vc grep ‘
         i f [ $NB_PROC −eq 0 ] ; then
            echo " $ s i t e m i s s i n g "
         fi
     done
  fi


                        Nicolas Ledez     Scripting with Sh
Syntax
                                            Awk
                                Variables
                                            Sed
                     Built-in Commands
                                            Autres
                        Awk, Sed et Co.


Autres 4/X

  c a t << EOF > $ { SED_FILE }
  s %172.30.47.11.∗ sapome01 . ∗ # Front −End%172.30.156.142
  sapome01%
  s %172.30.47.14.∗ sapome04 . ∗ # Front −End%172.30.156.144
  sapome04%
  EOF

  c a t << EOF | ssh $1 / b i n / bash − | t e e r e p o r t / $1
  echo ’ uname −a ’
  uname −a
  echo
  EOF


                          Nicolas Ledez     Scripting with Sh
Syntax
                                      Awk
                          Variables
                                      Sed
               Built-in Commands
                                      Autres
                  Awk, Sed et Co.


Conclusion




  Conclusion




                    Nicolas Ledez     Scripting with Sh
Syntax
                                            Awk
                                Variables
                                            Sed
                     Built-in Commands
                                            Autres
                        Awk, Sed et Co.


Bibliography




  UNIX in a Nutshell
  Ed. O’Reilly & Associates




                          Nicolas Ledez     Scripting with Sh
Syntax
                                       Awk
                           Variables
                                       Sed
                Built-in Commands
                                       Autres
                   Awk, Sed et Co.


Questions




  Questions ?




                     Nicolas Ledez     Scripting with Sh

Weitere ähnliche Inhalte

Andere mochten auch

DevTeach Ottawa - Silverlight5 and HTML5
DevTeach Ottawa - Silverlight5 and HTML5DevTeach Ottawa - Silverlight5 and HTML5
DevTeach Ottawa - Silverlight5 and HTML5Frédéric Harper
 
Mrs. Mac's Decision Support Systems
Mrs. Mac's Decision Support SystemsMrs. Mac's Decision Support Systems
Mrs. Mac's Decision Support Systemsdigiarchi
 
Prairie Dev Con West - 2012-03-14 - Webmatrix, see what the matrix can do fo...
Prairie Dev Con West -  2012-03-14 - Webmatrix, see what the matrix can do fo...Prairie Dev Con West -  2012-03-14 - Webmatrix, see what the matrix can do fo...
Prairie Dev Con West - 2012-03-14 - Webmatrix, see what the matrix can do fo...Frédéric Harper
 
MWNW Toronto Community Night - Make Web Not War
MWNW Toronto Community Night - Make Web Not WarMWNW Toronto Community Night - Make Web Not War
MWNW Toronto Community Night - Make Web Not WarFrédéric Harper
 
Regular use of static code analysis in team development
Regular use of static code analysis in team developmentRegular use of static code analysis in team development
Regular use of static code analysis in team developmentAndrey Karpov
 
Checking GIMP's Source Code with PVS-Studio
Checking GIMP's Source Code with PVS-StudioChecking GIMP's Source Code with PVS-Studio
Checking GIMP's Source Code with PVS-StudioAndrey Karpov
 
Differentiating yourself humber college - 2015-03-30
Differentiating yourself   humber college - 2015-03-30Differentiating yourself   humber college - 2015-03-30
Differentiating yourself humber college - 2015-03-30Frédéric Harper
 
Pres hsr mar5_call
Pres hsr mar5_callPres hsr mar5_call
Pres hsr mar5_callsoder145
 
Embracing Uncertainty: Learning to Think Responsively
Embracing Uncertainty: Learning to Think ResponsivelyEmbracing Uncertainty: Learning to Think Responsively
Embracing Uncertainty: Learning to Think ResponsivelyChad Currie
 
E book - How do you recovery costs from completed energy efficiency upgrades ...
E book - How do you recovery costs from completed energy efficiency upgrades ...E book - How do you recovery costs from completed energy efficiency upgrades ...
E book - How do you recovery costs from completed energy efficiency upgrades ...Alan Richardson
 
2013 global scm sponsorship prospectus
2013 global scm sponsorship prospectus2013 global scm sponsorship prospectus
2013 global scm sponsorship prospectusLauren Clausen
 
David Vasquez - ¿Puede USTED ser un líder?
David Vasquez - ¿Puede USTED ser un líder?David Vasquez - ¿Puede USTED ser un líder?
David Vasquez - ¿Puede USTED ser un líder?David C
 
Presentación tipos de evaluación
Presentación tipos de evaluación Presentación tipos de evaluación
Presentación tipos de evaluación Carla Canelón
 
Activity the writing final
Activity the writing finalActivity the writing final
Activity the writing finalyolisdeer
 
Seeing a Better World
Seeing a Better WorldSeeing a Better World
Seeing a Better WorldDigitalGlobe
 
Home insurance tips to live by
Home insurance tips to live byHome insurance tips to live by
Home insurance tips to live byKemner-Iott
 

Andere mochten auch (20)

DevTeach Ottawa - Silverlight5 and HTML5
DevTeach Ottawa - Silverlight5 and HTML5DevTeach Ottawa - Silverlight5 and HTML5
DevTeach Ottawa - Silverlight5 and HTML5
 
Mrs. Mac's Decision Support Systems
Mrs. Mac's Decision Support SystemsMrs. Mac's Decision Support Systems
Mrs. Mac's Decision Support Systems
 
Prairie Dev Con West - 2012-03-14 - Webmatrix, see what the matrix can do fo...
Prairie Dev Con West -  2012-03-14 - Webmatrix, see what the matrix can do fo...Prairie Dev Con West -  2012-03-14 - Webmatrix, see what the matrix can do fo...
Prairie Dev Con West - 2012-03-14 - Webmatrix, see what the matrix can do fo...
 
MWNW Toronto Community Night - Make Web Not War
MWNW Toronto Community Night - Make Web Not WarMWNW Toronto Community Night - Make Web Not War
MWNW Toronto Community Night - Make Web Not War
 
Regular use of static code analysis in team development
Regular use of static code analysis in team developmentRegular use of static code analysis in team development
Regular use of static code analysis in team development
 
Checking GIMP's Source Code with PVS-Studio
Checking GIMP's Source Code with PVS-StudioChecking GIMP's Source Code with PVS-Studio
Checking GIMP's Source Code with PVS-Studio
 
Differentiating yourself humber college - 2015-03-30
Differentiating yourself   humber college - 2015-03-30Differentiating yourself   humber college - 2015-03-30
Differentiating yourself humber college - 2015-03-30
 
Pres hsr mar5_call
Pres hsr mar5_callPres hsr mar5_call
Pres hsr mar5_call
 
Família carmelita
Família carmelitaFamília carmelita
Família carmelita
 
Embracing Uncertainty: Learning to Think Responsively
Embracing Uncertainty: Learning to Think ResponsivelyEmbracing Uncertainty: Learning to Think Responsively
Embracing Uncertainty: Learning to Think Responsively
 
E book - How do you recovery costs from completed energy efficiency upgrades ...
E book - How do you recovery costs from completed energy efficiency upgrades ...E book - How do you recovery costs from completed energy efficiency upgrades ...
E book - How do you recovery costs from completed energy efficiency upgrades ...
 
2013 global scm sponsorship prospectus
2013 global scm sponsorship prospectus2013 global scm sponsorship prospectus
2013 global scm sponsorship prospectus
 
David Vasquez - ¿Puede USTED ser un líder?
David Vasquez - ¿Puede USTED ser un líder?David Vasquez - ¿Puede USTED ser un líder?
David Vasquez - ¿Puede USTED ser un líder?
 
Comparaciondewed2.0
Comparaciondewed2.0 Comparaciondewed2.0
Comparaciondewed2.0
 
Navegadores de internet
Navegadores de internetNavegadores de internet
Navegadores de internet
 
Cultura, ciudad, acción colectiva
Cultura, ciudad, acción colectiva   Cultura, ciudad, acción colectiva
Cultura, ciudad, acción colectiva
 
Presentación tipos de evaluación
Presentación tipos de evaluación Presentación tipos de evaluación
Presentación tipos de evaluación
 
Activity the writing final
Activity the writing finalActivity the writing final
Activity the writing final
 
Seeing a Better World
Seeing a Better WorldSeeing a Better World
Seeing a Better World
 
Home insurance tips to live by
Home insurance tips to live byHome insurance tips to live by
Home insurance tips to live by
 

Ähnlich wie Formation sh

Ähnlich wie Formation sh (20)

Lecture1 3 shells
Lecture1 3 shellsLecture1 3 shells
Lecture1 3 shells
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
Spsl by sasidhar 3 unit
Spsl by sasidhar  3 unitSpsl by sasidhar  3 unit
Spsl by sasidhar 3 unit
 
Xtext Webinar
Xtext WebinarXtext Webinar
Xtext Webinar
 
Xtext Webinar
Xtext WebinarXtext Webinar
Xtext Webinar
 
Unix
UnixUnix
Unix
 
Unit 7 standard i o
Unit 7 standard i oUnit 7 standard i o
Unit 7 standard i o
 
Basic basic solaris quick referent card
Basic basic solaris quick referent cardBasic basic solaris quick referent card
Basic basic solaris quick referent card
 
RHCSA EX200 - Summary
RHCSA EX200 - SummaryRHCSA EX200 - Summary
RHCSA EX200 - Summary
 
Session3
Session3Session3
Session3
 
Slides
SlidesSlides
Slides
 
Unix
UnixUnix
Unix
 
Unix
UnixUnix
Unix
 
Unix
UnixUnix
Unix
 
Operating system (remuel)
Operating system (remuel)Operating system (remuel)
Operating system (remuel)
 
Comredis
ComredisComredis
Comredis
 
of 70UNIX Unbounded 5th EditionAmir Afzal .docx
 of 70UNIX Unbounded 5th EditionAmir Afzal .docx of 70UNIX Unbounded 5th EditionAmir Afzal .docx
of 70UNIX Unbounded 5th EditionAmir Afzal .docx
 
of 70UNIX Unbounded 5th EditionAmir Afzal .docx
of 70UNIX Unbounded 5th EditionAmir Afzal .docxof 70UNIX Unbounded 5th EditionAmir Afzal .docx
of 70UNIX Unbounded 5th EditionAmir Afzal .docx
 
Shellscripting
ShellscriptingShellscripting
Shellscripting
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell Scripting
 

Kürzlich hochgeladen

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Kürzlich hochgeladen (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

Formation sh

  • 1. Syntax Variables Built-in Commands Awk, Sed et Co. Scripting with Sh Nicolas Ledez 15 septembre 2008 Nicolas Ledez Scripting with Sh
  • 2. Syntax Variables Built-in Commands Awk, Sed et Co. Outline 1 Syntax 2 Variables 3 Built-in Commands 4 Awk, Sed et Co. Nicolas Ledez Scripting with Sh
  • 3. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Filename Metacharacters String Meaning * Match any string of zero or more characters ? Match any single character [abc...] Match any one of the enclosed characters ; a hyphen can specify a range (e.g., a–z, A–Z, 0–9) [!abc...] Match any character not enclosed as above Nicolas Ledez Scripting with Sh
  • 4. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Filename Metacharacters - examples String Meaning new* Match new new.1 ch? Match ch9 but not ch10 [D-R]* Match files that begin with uppercase D through R Nicolas Ledez Scripting with Sh
  • 5. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Quoting Character Meaning ; Command separator & Background execution ( ) Command grouping | Pipe < > & Redirection symbols * ? [ ] ~ + - @ ! Filename metacharacters " ’ Used in quoting other characters ‘ Command substitution $ Variable substitution space tab newline Word separators Nicolas Ledez Scripting with Sh
  • 6. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Quoting - examples $ echo ’Single quotes "protect" double quotes’ Single quotes "protect" double quotes $ echo "Well, isn’t that "special" ?" Well, isn’t that "special" ? $ echo "You have ‘ls | wc -l‘ files in ‘pwd‘" You have 43 files in /home/bob Nicolas Ledez Scripting with Sh
  • 7. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Command Forms 1/2 cmd & Execute cmd in background cmd1 ; cmd2 Command sequence ; execute multiple cmds on the same line { cmd1 ; cmd2 ; } Execute commands as a group in the current shell (cmd1 ; cmd2) Execute commands as a group in a subshell cmd1 | cmd2 Pipe ; use output from cmd1 as input to cmd2 cmd1 ‘cmd2‘ Command substitution ; use cmd2 output as arguments to cmd1 Nicolas Ledez Scripting with Sh
  • 8. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Command Forms 2/2 cmd1 && cmd2 AND ; execute cmd1 and then (if cmd1 succeeds) cmd2. This is a “short-circuit” operation ; cmd2 is never executed if cmd1 fails cmd1 || cmd2 OR ; execute either cmd1 or (if cmd1 fails) cmd2. This is a “short-circuit” operation ; cmd2 is never executed if cmd1 suc- ceeds Nicolas Ledez Scripting with Sh
  • 9. Command Forms - examples $ nroff file > file.txt & Format in the background $ cd ; ls Execute sequentially $ (date ; who ; pwd) > logfile All output is redirected $ sort file | pr -3 | lp Sort file, page output, then print $ vi ‘grep -l ifdef *.c‘ Edit files found by grep $ egrep ’(yes|no)’ ‘cat list‘ Specify a list of files to search $ grep XX file && lp file Print file if it contains the pattern $ grep XX file || echo "XX not found" otherwise, echo an error message
  • 10. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Redirection Forms File De- Name Common Typical Default scriptor Abbreviation 0 Standard input stdin Keyboard 1 Standard output stdout Terminal 2 Standard error stderr Terminal Nicolas Ledez Scripting with Sh
  • 11. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Redirection Forms - Simple redirection $ cmd > file Send output of cmd to file (overwrite) $ cmd » file Send output of cmd to file (append) $ cmd < file Take input for cmd from file $ cmd « text The contents of the shell script up to a line identical to text become the standard input for cmd (text can be stored in a shell variable) Nicolas Ledez Scripting with Sh
  • 12. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Redirection Forms - Redirection using file descriptors cmd >&n Send cmd output to file descriptor n cmd m>&n Same, except that output that would normally go to file descriptor m is sent to file descriptor n instead cmd >&- Close standard output cmd <&n Take input for cmd from file descriptor n cmd m<&n Same, except that input that would normally come from file descriptor m comes from file descriptor n instead cmd <&- Close standard input Nicolas Ledez Scripting with Sh
  • 13. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Redirection Forms - examples 1/2 $ cat part1 > book $ cat part2 part3 >> book $ mail tim < report $ sed ’s/^/XX /g’ << "END_ARCHIVE" > echo toto $titi > END_ARCHIVE XX echo toto $titi $ export titi=qsdf $ sed ’s/^/XX /g’ << END_ARCHIVE > echo toto $titi > END_ARCHIVE XX echo toto qsdf Nicolas Ledez Scripting with Sh
  • 14. Syntax Filename Metacharacters Variables Quoting Built-in Commands Command Forms Awk, Sed et Co. Redirection Forms Redirection Forms - examples 2/2 $ echo "Usage error: see administrator" 1>&2 To redirect standard output to standard error $ find / -print > filelist 2>no_access The following command sends output (files found) to filelist and error messages (inaccessible files) to file no_access Nicolas Ledez Scripting with Sh
  • 15. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Variable Substitution String Meaning var=value Set each variable var to a value $var ${var} Use value of var ${var:-value} Use var if set ; otherwise, use value ${var:=value} Use var if set ; otherwise, use value and assign value to var ${var:?value} se var if set ; otherwise, print value and exit (if not interactive). If value isn’t supplied, print the phrase "parameter null or not set." ${var:+value} Use value if var is set ; otherwise, use nothing Nicolas Ledez Scripting with Sh
  • 16. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Variable Substitution 1/2 $ u=up d=down blank= Assign values to three variables (last is null) $ echo ${u}root uproot Braces are needed here $ echo ${u-$d} up Display value of u or d ; since u is set, it’s printed $ echo ${tmp-‘date‘} Thu Feb 4 15:03:46 EST 1993 If tmp is not set, the date command is executed Nicolas Ledez Scripting with Sh
  • 17. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Variable Substitution 1/2 $ u=up d=down blank= $ echo ${blank="no data"} blank is set, so it is printed (a blank line) $ echo ${blank:="no data"} no data blank is set but null, so the string is printed $ echo $blank no data blank now has a new value Nicolas Ledez Scripting with Sh
  • 18. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Built-in Shell Variables 1/2 String Meaning $# Number of command-line arguments $- Options currently in effect (arguments supplied to sh or to set) $? Exit value of last executed command $$ Process number of current process $! Process number of last background command Nicolas Ledez Scripting with Sh
  • 19. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Built-in Shell Variables 2/2 String Meaning $0 First word ; that is, command name. This will have the full path name if it was found via a PATH search $n Individual arguments on command line (positional parameters, n = 1–9). $*, $@ All arguments on command line ($1 $2 ...) "$*" All arguments on command line as one string ("$1 $2...") "$@" All arguments on command line, indi- vidually quoted ("$1" "$2" ...) Nicolas Ledez Scripting with Sh
  • 20. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Other Shell Variables 1/2 String Meaning CDPATH=dirs Directories searched by cd ; allows shortcuts in changing directories ; un- set by default HOME=dir Home directory ; set by login (from /etc/passwd file) IFS=’chars’ Input field separators ; default is space, tab, and newline LANG=dir Directory to use for certain language- dependent programs MAIL=file Default file in which to receive mail ; set by login Nicolas Ledez Scripting with Sh
  • 21. Syntax Variable Substitution Variables Built-in Shell Variables Built-in Commands Other Shell Variables Awk, Sed et Co. Other Shell Variables 2/2 String Meaning MAILCHECK=n Number of seconds between mail checks ; default is 600 (10 minutes) PATH=dirlist One or more pathnames, delimited by colons, in which to search for com- mands to execute PS1=string Primary prompt string ; default is $ PS2=string Secondary prompt (used in multiline commands) ; default is > SHELL=file Name of default shell (e.g., /bin/sh) TERM=string Terminal type Nicolas Ledez Scripting with Sh
  • 22. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script shell-bang # : # ! / b i n / sh # comment ... Nicolas Ledez Scripting with Sh
  • 23. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script !: i f who | grep r o o t > / dev / n u l l then echo r o o t i s c u r r e n t l y logged on fi i f ! who | grep r o o t > / dev / n u l l then echo r o o t i s n o t c u r r e n t l y logged on fi i f who | grep r o o t > / dev / n u l l then : # Do n o t h i n g i f p a t t e r n i s found else echo r o o t i s n o t c u r r e n t l y logged on fi Nicolas Ledez Scripting with Sh
  • 24. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script cd pwd kill sleep time $ pwd / home / admin $ cd / tmp / $ pwd / tmp $ k i l l 19524 $ date && s l e e p 2 && date Mon Aug 13 1 6 : 3 0 : 2 9 CEST 2007 Mon Aug 13 1 6 : 3 0 : 3 1 CEST 2007 $ t i m e ( f i n d / tmp >/ dev / n u l l 2>&1) real 0m0.002 s user 0m0.000 s sys 0m0.004 s Nicolas Ledez Scripting with Sh
  • 25. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script type ulimit umask $ t y p e mv read mv i s / b i n / mv read i s a s h e l l b u i l t i n # Turn o f f w r i t e p e r m i s s i o n f o r o t h e r s : # Produces f i l e p e r m i s s i o n −rw−rw−r−− $ umask 002 # Turn o f f a l l p e r m i s s i o n s f o r group & o t h e r s : # Produces f i l e p e r m i s s i o n −rw−−−−−−− $ umask 077 $ man u l i m i t Nicolas Ledez Scripting with Sh
  • 26. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script if i f [ $ c o u n t e r − l t 10 ] then number=0 $ c o u n t e r else number= $ c o u n t e r fi i f [ ! −d $ d i r ] ; then mkdir $ d i r chmod 775 $ d i r fi Nicolas Ledez Scripting with Sh
  • 27. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script for f i l e _ l i s t =" i n s t a l l _ p e a r l _ h o s t . t x t " HOST_OK= ‘ awk ’ / [ X ] / { p r i n t $2 } ’ $ f i l e _ l i s t ‘ HOST_KO= ‘ awk ’ / [ . ] / { p r i n t $2 } ’ $ f i l e _ l i s t echo " h o s t OK" f o r h o s t i n $HOST_OK ; do echo $host check_tcp −H $host − t 1 −p 10001 done echo " h o s t KO" f o r h o s t i n $HOST_KO ; do echo $host check_tcp −H $host − t 1 −p 10001 done Nicolas Ledez Scripting with Sh
  • 28. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script while w h i l e [ − f t o t o ] ; do echo Wait sleep 1 done Nicolas Ledez Scripting with Sh
  • 29. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script continue f o r i i n ‘ seq 7 ‘ ; do i f [ $ i −eq 5 ] ; then continue fi echo $ i done 1 2 3 4 6 7 Nicolas Ledez Scripting with Sh
  • 30. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script break f o r i i n ‘ seq 7 ‘ ; do i f [ $ i −eq 5 ] ; then break fi echo $ i done 1 2 3 4 Nicolas Ledez Scripting with Sh
  • 31. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script until u n t i l [ − f t o t o ] ; do echo Wait sleep 1 done Nicolas Ledez Scripting with Sh
  • 32. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script case case $1 i n # Match t h e f i r s t arg no | yes ) response = 1 ; ; −[ t T ] ) t a b l e =TRUE ; ; ∗) echo " unknown o p t i o n " ; e x i t 1 ; ; esac Nicolas Ledez Scripting with Sh
  • 33. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script name() count ( ) { l s | wc − l } count 13 Nicolas Ledez Scripting with Sh
  • 34. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script alias a l i a s l l = ’ l s −l a t r ’ a l i a s l s = ’ l s −−c o l o r =auto ’ a l i a s omega= ’ cd ~ / p r o j e c t s / omega ’ Nicolas Ledez Scripting with Sh
  • 35. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script exit i f [ $# −eq 0 ] then echo " Usage : $0 [−c ] [−d ] f i l e ( s ) " 1>&2 exit 1 # Error status fi Nicolas Ledez Scripting with Sh
  • 36. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script getopts w h i l e g e t o p t s " hzgc : " Option ; do case $Option i n h ) usage ; e x i t 0 ; ; c ) COPY=1 ; HOST=$OPTARG ; ; g ) GENERATE=1 ; ; ∗ ) echo " Unimplemented o p t i o n chosen . " exit 3 ;; esac done shift ‘ expr $OPTIND − 1 ‘ Nicolas Ledez Scripting with Sh
  • 37. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script echo user@myhost : ~ $ echo $LC_ALL en_US . UTF−8 user@myhost : ~ $ echo " $LC_ALL " en_US . UTF−8 user@myhost : ~ $ echo ’ $LC_ALL ’ $LC_ALL Nicolas Ledez Scripting with Sh
  • 38. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script export et eval $ command=echo $ e x p o r t command $ parameters =" d i f f e r e n t parameters " $ e x p o r t parameters $ e v a l $command $parameters d i f f e r e n t parameters Nicolas Ledez Scripting with Sh
  • 39. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script nohup nohup - run a command immune to hangups, with output to a non-tty $ nohup l s nohup : appending o u t p u t t o ‘ nohup . out ’ $ c a t nohup . o u t ssh−GKxbwc9627 ssh−kXMoX18526 ssh−tEcuR24939 Nicolas Ledez Scripting with Sh
  • 40. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script read $ read f i r s t l a s t address Sarah C a l d w e l l 123 Main S t r e e t $ echo " $ l a s t , $ f i r s t n$address " C a l d w e l l , Sarah 123 Main S t r e e t Nicolas Ledez Scripting with Sh
  • 41. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script return Exit the function with status n or with the exit status of the previously executed command. return Nicolas Ledez Scripting with Sh
  • 42. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script set s e t −vx # Read each command l i n e ; # show i t ; execute i t ; # show i t again # ( w i t h arguments ) s e t +x # Stop command t r a c i n g s e t −o n o c l ob b e r # Prevent f i l e o v e r w r i t i n g s e t +o n o c l o b b e r # Allow f i l e o v e r w r i t i n g # again Nicolas Ledez Scripting with Sh
  • 43. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script shift Shift positional arguments (e.g., 2becomes1). If n is given, shift to the left n places. Used in while loops to iterate through command-line arguments. $ shift $ shift 2 Nicolas Ledez Scripting with Sh
  • 44. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script test - File Conditions 1/2 −b f i l e file e x i s t s and i s a b l o c k s p e c i a l f i l e . −c f i l e file e x i s t s and i s a c h a r a c t e r s p e c i a l f i l e . −d f i l e file e x i s t s and i s a d i r e c t o r y . −f f i l e file e x i s t s and i s a r e g u l a r f i l e . −g f i l e file e x i s t s , and i t s set−group−i d b i t i s s e t . −k f i l e file e x i s t s , and i t s s t i c k y b i t i s s e t . Nicolas Ledez Scripting with Sh
  • 45. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script test - File Conditions 2/2 −p f i l e f i l e e x i s t s and i s a named p i p e ( f i f o ) . −r f i l e f i l e e x i s t s and i s r e a d a b l e . −s f i l e f i l e e x i s t s and has a s i z e g r e a t e r than zero . −t [ n ] The open f i l e d e s c r i p t o r n i s a s s o c i a t e d −u f i l e f i l e e x i s t s , and i t s set−user−i d b i t i s s e t . −w f i l e f i l e e x i s t s and i s w r i t a b l e . −x f i l e f i l e e x i s t s and i s e x e c u t a b l e . Nicolas Ledez Scripting with Sh
  • 46. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script test - String Conditions string s t r i n g i s not n u l l . −n s1 S t r i n g s1 has nonzero l e n g t h . −z s1 S t r i n g s1 has zero l e n g t h . s1 = s2 S t r i n g s s1 and s2 are i d e n t i c a l . s1 ! = s2 S t r i n g s s1 and s2 are n o t i d e n t i c a l . Nicolas Ledez Scripting with Sh
  • 47. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script test - Integer Comparisons n1 −eq n2 n1 equals n2 . n1 −ge n2 n1 i s g r e a t e r than o r equal t o n2 . n1 −g t n2 n1 i s g r e a t e r than n2 . n1 −l e n2 n1 i s l e s s than o r equal t o n2 . n1 − l t n2 n1 i s l e s s than n2 . n1 −ne n2 n1 does n o t equal n2 . Nicolas Ledez Scripting with Sh
  • 48. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script test - Combined Forms ! condition True i f c o n d i t i o n i s f a l s e . c o n d i t i o n 1 −a c o n d i t i o n 2 True i f both c o n d i t i o n s are t r u e . c o n d i t i o n 1 −o c o n d i t i o n 2 True i f e i t h e r c o n d i t i o n i s t r u e . Nicolas Ledez Scripting with Sh
  • 49. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script test - Examples # While t h e r e are arguments . . . w h i l e t e s t $# −g t 0 # While t h e r e are nonempty arguments . . . w h i l e [ −n " $1 " ] # I f $count i s l e s s than 1 0 . . . i f [ $count − l t 10 ] # I f t h e RCS d i r e c t o r y e x i s t s . . . i f [ −d RCS ] # I f t h e answer i s n o t y . . . i f [ " $answer " ! = " y " ] # I f t h e f i r s t argument i s n o t a # readable f i l e or a r e g u l a r f i l e . . . i f [ ! −r " $1 " −o ! − f " $1 " ] Nicolas Ledez Scripting with Sh
  • 50. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script trap Remove a $tmp file when the shell program exits, or if the user logs out, presses CTRL-C, or does a kill : t r a p " rm − f $tmp ; e x i t " 0 1 2 15 Nicolas Ledez Scripting with Sh
  • 51. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script wait ( / b i n / d f / path / n f s ) & cmdpid=$ ! t i m e o u t =10 ( sleep $timeout echo " d f $1 check f a i l e d " ( k i l l −9 $cmdpid ) > / dev / n u l l 2>&1 ) & watchdogpid=$ ! w a i t $cmdpid k i l l $watchdogpid >/ dev / n u l l 2>&1 Nicolas Ledez Scripting with Sh
  • 52. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script unset $ echo $ t o t o $ t o t o =qsdf $ echo $ t o t o qsdf $ unset t o t o $ echo $ t o t o $ Nicolas Ledez Scripting with Sh
  • 53. Syntax Base Variables Boucle Built-in Commands Fonction Awk, Sed et Co. Script filename Put filename in script to launch it Nicolas Ledez Scripting with Sh
  • 54. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Awk awk ’ { p r i n t $1 } ’ a− f i l e awk ’ { p r i n t $1 " ; " $4 } a− f i l e awk ’ { FS = " ; " } / ^ ’ $ {HOST } ’ / { p r i n t $2 } ’ a− f i l e awk −F ’ | ’ ’ { p r i n t $2 } ’ a− f i l e awk ’ / [ $ {PATTERN } ] / { p r i n t $2 } ’ a− f i l e awk ’ { i f ( $1 == t b s p ) { p r i n t $2 } } ’ t b s p =" $ {TBSP } " a− f i l e awk ’ { FS = " : " } / ^ [ ^ # ∗ ] / { p r i n t $1 } ’ a− f i l e awk ’ BEGIN { FS = " : " } $6 ~ / ^ / $ / { p r i n t " I n / : " , $1 } ’ / e t c / passwd awk ’ $3 ~ / : / { p r i n t $1 } ’ a− f i l e Nicolas Ledez Scripting with Sh
  • 55. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Sed sed ’ s / ^ / XX / g ’ sed − f $ {MEGASED} $ { f i l e } sed " s / #ENV# / $ { env } / g " sed ’ s / ^KO / / ; s / KO$ / / ’ Nicolas Ledez Scripting with Sh
  • 56. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Autres 1/X c a t << "EOF" | ssh $1 / b i n / sh − ps −e d f −o comm, args | grep [ h ] t t p d | s o r t −u $ {ORACLE_HOME } / b i n / s q l p l u s " / as sysdba " << EOF s p o o l $ {ORACLE_BASE } / admin / $ { ORACLE_SID } / c r e a t e / s c o EOF c a t << EOF | ssh $1 / b i n / sh − chown −R $ {ADMCTS_NAME } : $ {ADMCTS_GROUP} $ {HOMEDIR} EOF Nicolas Ledez Scripting with Sh
  • 57. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Autres 2/X expect << EOF spawn ssh − t $1 passwd $ {ADMCTS_NAME} expect "New Password : " send " $ {ADMCTS_PASSWD } r " expect " Re−e n t e r new Password : " send " $ {ADMCTS_PASSWD } r " expect e o f EOF Nicolas Ledez Scripting with Sh
  • 58. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Autres 3/X c a t << "EOF" | ssh $1 / b i n / bash − SITES = / s i t e s i f [ −d $SITES ] ; then cd $SITES f o r s i t e i n ∗ ; do NB_PROC= ‘ ps −e d f | grep $ s i t e | grep −vc grep ‘ i f [ $NB_PROC −eq 0 ] ; then echo " $ s i t e m i s s i n g " fi done fi Nicolas Ledez Scripting with Sh
  • 59. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Autres 4/X c a t << EOF > $ { SED_FILE } s %172.30.47.11.∗ sapome01 . ∗ # Front −End%172.30.156.142 sapome01% s %172.30.47.14.∗ sapome04 . ∗ # Front −End%172.30.156.144 sapome04% EOF c a t << EOF | ssh $1 / b i n / bash − | t e e r e p o r t / $1 echo ’ uname −a ’ uname −a echo EOF Nicolas Ledez Scripting with Sh
  • 60. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Conclusion Conclusion Nicolas Ledez Scripting with Sh
  • 61. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Bibliography UNIX in a Nutshell Ed. O’Reilly & Associates Nicolas Ledez Scripting with Sh
  • 62. Syntax Awk Variables Sed Built-in Commands Autres Awk, Sed et Co. Questions Questions ? Nicolas Ledez Scripting with Sh