Outils pour utilisateurs

Outils du site


programmation_bash

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
programmation_bash [2009/04/06 08:40] thierryprogrammation_bash [2010/04/29 09:32] (Version actuelle) thierry
Ligne 69: Ligne 69:
     echo "> $line"     echo "> $line"
   done   done
 +
 +===== regex =====
 +
 +  #!/bin/sh
 +  
 +  ARG="$1"
 +  
 +  if [[ "$ARG" =~ "^([[:alnum:]]*)=([[:digit:]]*)$" ]]; then
 +    echo "${BASH_REMATCH[1]}"
 +    echo "${BASH_REMATCH[2]}"
 +  fi
 +
 +Avec gnu bash <= 3.1, test:
 +  $ ./t option=1234
 +  option
 +  1234
 +
 +Le problème, sous Lenny, ca ne fonctionnera plus a cause des "quote"... il faut les virer.\\
 +Quand ce n'est pas possible (a cause des espaces par exemple), il faut mettre le regex dans une variable.
 +
 +Donc, ecrire sans "quote" :
 +  ...
 +  if [[ "$ARG" =~ ^([[:alnum:]]*)=([[:digit:]]*)$ ]]; then
 +  ...
 +
 +  $ sh --version
 +  GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
 +  Copyright (C) 2007 Free Software Foundation, Inc.
 +
 +===== Delimiteurs =====
 +Lien: http://www.debianadmin.com/delimiters-in-bash.html
 +
 +Exemple:
 +  #!/bin/sh
 +  
 +  cat /etc/passwd | while read line; do
 +  
 +  IFS=":"
 +  read username pass auid agid agroup ahome ashell <<EOF
 +  $line
 +  EOF
 +  
 +  echo "username=" $username
 +  echo "ashell=" $ashell
 +  
 +  done
 +  
 +  unset IFS
 + 
 +  #!/bin/sh
 +    
 +  IFS=":"
 +  read first_name last_name  <<< "$( echo 'hello:ducon' )"
 +  
 +  echo "1: $first_name"
 +  echo "2: $last_name"
 +  
 +  unset IFS
 +
 +Output du dernier exemple:
 +  1: hello
 +  2: ducon
 +
 +===== LOCK =====
 +Realiser un LOCK sur un scripte...
 +
 +Lien: http://bash-hackers.org/wiki/doku.php/howto/mutex
 +
 +Pour resumer: la seule solution portable est d'utiliser "mkdir"
 +
 +Voir aussi "trap" pour supprimer le "lock"
 +
 +===== TRAP =====
 +
 +Comment traper les signaux, ou simplement la sortie du script...
 +
 +Lien: http://www.traduc.org/~gleu/ykerb/ch12.html
 +
 +====== awk ======
 +
 +===== /etc/passwd =====
 +
 +   cat /etc/passwd | awk -F':' '{ printf("%s => %s uid:%s\n", $7, $1 , $3 ) }' 
  
programmation_bash.1239007253.txt.gz · Dernière modification : 2009/04/06 08:40 de thierry