programmation_bash
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
programmation_bash [2007/08/07 21:50] – créée thierry | programmation_bash [2010/04/29 09:32] (Version actuelle) – thierry | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Bash ====== | ====== Bash ====== | ||
+ | Lien: | ||
+ | *[[http:// | ||
===== Les bases ===== | ===== Les bases ===== | ||
Ligne 11: | Ligne 13: | ||
$ chmod a+x mon_scripte.sh | $ chmod a+x mon_scripte.sh | ||
$ ./ | $ ./ | ||
+ | |||
+ | |||
+ | |||
===== Variables ===== | ===== Variables ===== | ||
=== Declarer === | === Declarer === | ||
Ligne 30: | Ligne 35: | ||
face | face | ||
=== Motif === | === Motif === | ||
- | | * | n' | + | | * | n' |
| ? | n' | | ? | n' | ||
- | '' | + | | [] | liste de caractère |
+ | \* pour * ou \? pour ? ou \\\\ pour \ | ||
- | **Extraction par le début:**\\ | + | **Elimination du début |
+ | Le plus petit: | ||
Syntaxe: ${variable# | Syntaxe: ${variable# | ||
echo ${COMMENT# | echo ${COMMENT# | ||
+ | echo ${COMMENT# | ||
+ | echo ${COMMENT#??? | ||
+ | echo ${COMMENT# | ||
+ | echo ${COMMENT} | ||
Sortie: | Sortie: | ||
face reseau | face reseau | ||
+ | ce reseau | ||
+ | rface reseau | ||
+ | terface reseau | ||
+ | Interface reseau | ||
+ | |||
+ | Le plus long: | ||
+ | Syntaxe: ${variable## | ||
+ | echo ${COMMENT## | ||
+ | Sortie: | ||
+ | u | ||
+ | |||
+ | ===== redirection ===== | ||
+ | Lien: http:// | ||
+ | |||
+ | Lire , line a line, la sortie (stdout) d'une commande: | ||
+ | digitemp_DS2490 -q -t 0 -o 2 | | ||
+ | while read line; do | ||
+ | echo "> $line" | ||
+ | done | ||
+ | |||
+ | ===== regex ===== | ||
+ | |||
+ | #!/bin/sh | ||
+ | | ||
+ | ARG=" | ||
+ | | ||
+ | if [[ " | ||
+ | echo " | ||
+ | echo " | ||
+ | fi | ||
+ | |||
+ | Avec gnu bash <= 3.1, test: | ||
+ | $ ./t option=1234 | ||
+ | option | ||
+ | 1234 | ||
+ | |||
+ | Le problème, sous Lenny, ca ne fonctionnera plus a cause des " | ||
+ | Quand ce n'est pas possible (a cause des espaces par exemple), il faut mettre le regex dans une variable. | ||
+ | |||
+ | Donc, ecrire sans " | ||
+ | ... | ||
+ | if [[ " | ||
+ | ... | ||
+ | |||
+ | $ sh --version | ||
+ | GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu) | ||
+ | Copyright (C) 2007 Free Software Foundation, Inc. | ||
+ | |||
+ | ===== Delimiteurs ===== | ||
+ | Lien: http:// | ||
+ | |||
+ | Exemple: | ||
+ | #!/bin/sh | ||
+ | | ||
+ | cat /etc/passwd | while read line; do | ||
+ | | ||
+ | IFS=":" | ||
+ | read username pass auid agid agroup ahome ashell <<EOF | ||
+ | $line | ||
+ | EOF | ||
+ | | ||
+ | echo " | ||
+ | echo " | ||
+ | | ||
+ | done | ||
+ | | ||
+ | unset IFS | ||
+ | |||
+ | #!/bin/sh | ||
+ | | ||
+ | IFS=":" | ||
+ | read first_name last_name | ||
+ | | ||
+ | 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:// | ||
+ | |||
+ | Pour resumer: la seule solution portable est d' | ||
+ | |||
+ | Voir aussi " | ||
+ | |||
+ | ===== TRAP ===== | ||
+ | |||
+ | Comment traper les signaux, ou simplement la sortie du script... | ||
+ | |||
+ | Lien: http:// | ||
+ | |||
+ | ====== awk ====== | ||
+ | |||
+ | ===== /etc/passwd ===== | ||
+ | |||
+ | cat /etc/passwd | awk -F':' | ||
+ |
programmation_bash.1186523435.txt.gz · Dernière modification : 2007/08/07 21:50 de thierry