SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

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
 

Destacado (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
 

Similar a Formation sh

Similar a 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
 

Último

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
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
 

Último (20)

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
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
 

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