« Bash » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
 
Ligne 11 : Ligne 11 :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
CURDIR=$(dirname $(readlink -f $0))
CURDIR=$(dirname $(readlink -f $0))
</syntaxhighlight>
</syntaxhighlight><br>
 
== Rediriger les sorties ==
== Rediriger les sorties ==
Attention, bien mettre 2>&1 à la fin de la ligne
Attention, bien mettre 2>&1 à la fin de la ligne
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
prog > log.txt  2>&1
prog > log.txt  2>&1
</syntaxhighlight>
</syntaxhighlight><br>
 


== Un équivalent de sprintf ==
== Un équivalent de sprintf ==
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)
file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)
</syntaxhighlight>
</syntaxhighlight><br>
 


== Vérifier le retour d'une commande ==
== Vérifier le retour d'une commande ==
Ligne 29 : Ligne 32 :
     echo "ERROR!"
     echo "ERROR!"
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 


== Debug de bash ==
== Debug de bash ==
Ligne 36 : Ligne 40 :
set -x
set -x
...
...
</syntaxhighlight>
</syntaxhighlight><br>
 


== Ligne de Commande ==
== Ligne de Commande ==
Ligne 46 : Ligne 51 :
exit
exit
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 


=== Récupérer les options de la ligne de commande ===
=== Récupérer les options de la ligne de commande ===
Ligne 79 : Ligne 85 :
done
done
  shift $(($OPTIND - 1))
  shift $(($OPTIND - 1))
</source>
</source><br>
 


== Fichier==
== Fichier==
Ligne 86 : Ligne 93 :
shopt -s extglob
shopt -s extglob
rm -rf -- !(.git)
rm -rf -- !(.git)
</syntaxhighlight>
</syntaxhighlight><br>
 
=== Récupérer le nom et l'extension d'un fichier ===
=== Récupérer le nom et l'extension d'un fichier ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 95 : Ligne 103 :
echo ${F%.*}
echo ${F%.*}
thisfile
thisfile
</syntaxhighlight>
</syntaxhighlight><br>
 


=== Tester si un fichier existe ===
=== Tester si un fichier existe ===
Ligne 103 : Ligne 112 :
     echo the file does not exist
     echo the file does not exist
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 


=== Tester si un lien existe ===
=== Tester si un lien existe ===
Ligne 111 : Ligne 121 :
     echo the link does not exist
     echo the link does not exist
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 


=== Ecrire en binaire dans un fichier ===
=== Ecrire en binaire dans un fichier ===
Ligne 117 : Ligne 128 :
#!/bin/bash
#!/bin/bash
echo -n "Suspend2" | dd of=/my_hibernation_image bs=1 conv=notrunc  
echo -n "Suspend2" | dd of=/my_hibernation_image bs=1 conv=notrunc  
</syntaxhighlight>
</syntaxhighlight><br>
 


== Variables ==
== Variables ==
Ligne 124 : Ligne 136 :
#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
DIR=${1:-$tmpdir}  
DIR=${1:-$tmpdir}  
</syntaxhighlight>
</syntaxhighlight><br>
 




Ligne 133 : Ligne 146 :
     echo "var is Test"
     echo "var is Test"
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 


== Vérifier si une variable est vide (non affectée) ==
== Vérifier si une variable est vide (non affectée) ==
Ligne 143 : Ligne 157 :
echo "variable is set"
echo "variable is set"
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 
=== Comment récupérer une variable de nom variable ===
=== Comment récupérer une variable de nom variable ===


Ligne 153 : Ligne 168 :
C=${!B}
C=${!B}
echo $C
echo $C
</syntaxhighlight>
</syntaxhighlight><br>
 


== Comment lire un mot de passe ==
== Comment lire un mot de passe ==
Ligne 161 : Ligne 177 :


read -s password
read -s password
</syntaxhighlight>
</syntaxhighlight><br>
 


== Comment faire des opérations mathématiques sur des variables ==
== Comment faire des opérations mathématiques sur des variables ==
Ligne 172 : Ligne 189 :
$ C=$((A+B))
$ C=$((A+B))
$ echo $C
$ echo $C
</syntaxhighlight>
</syntaxhighlight><br>
 




Ligne 184 : Ligne 202 :
     echo ceci n'est pas un nombre
     echo ceci n'est pas un nombre
fi
fi
</syntaxhighlight>
</syntaxhighlight><br>
 


== Liens externes ==  
== Liens externes ==  

Dernière version du 28 décembre 2022 à 11:37

langfr-290px-Gnu-bash-logo.svg.png

Le fichier .bashrc

Voir    .bashrc


Historique du bash

98-petits-trucs-pour-configurer-l-historique-du-bash


Récupérer le répertoire du script courant

CURDIR=$(dirname $(readlink -f $0))


Rediriger les sorties

Attention, bien mettre 2>&1 à la fin de la ligne

prog > log.txt  2>&1



Un équivalent de sprintf

file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)



Vérifier le retour d'une commande

grep "test" test.txt
if [ $? -gt 0 ]; then
    echo "ERROR!"
fi



Debug de bash

#!/bin/bash
set -x
...



Ligne de Commande

Test du nombre d'arguments de la ligne de commande

#!/bin/bash
if [ $# -ne 2 ]
then	
	exit
fi



Récupérer les options de la ligne de commande

#!/bin/bash
 
while getopts lvxad:s:u:h opt
do
        case $opt in
                d)  DISPLAY="$OPTARG:0.0"
                        DIS_CMD="-display $DISPLAY"
                        export DISPLAY
                        ;;
                s)  SSH_CMD="ssh $OPTARG"
                        HOSTNAME=$OPTARG
                        ;;
                h)      ACTION=HELP
                        echo "help"
                        ;;
                x)  ACTION=XXREF
                        ;;
                a)  ACTION=XXREF_ALL
                        ;;
                l)  ACTION=LIST
                        ;;
                u)  USER=$OPTARG
                        echo "user:" $USER
                        ;;
                v)  opt_verbose=1
                        ;;
        esac       
done
 shift $(($OPTIND - 1))



Fichier

Supprimer tous les fichiers d'un répertoire à l'exception d'un fichier

shopt -s extglob
rm -rf -- !(.git)


Récupérer le nom et l'extension d'un fichier

#!/bin/bash
F=”thisfile.txt”
echo ${F#*.}
txt
echo ${F%.*}
thisfile



Tester si un fichier existe

if [ ! -f /tmp/foo.txt ]
then
    echo the file does not exist
fi



Tester si un lien existe

if [ ! -L /tmp/foo.txt ]
then
    echo the link does not exist
fi



Ecrire en binaire dans un fichier

#!/bin/bash
echo -n "Suspend2" | dd of=/my_hibernation_image bs=1 conv=notrunc



Variables

Définir la valeur par défaut

#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
DIR=${1:-$tmpdir}



Tester une valeur

if [ "$VAR" == "Test" ]
then
     echo "var is Test"
fi



Vérifier si une variable est vide (non affectée)

if [ -z "$1" ]
then
	echo "unset variable"
else
	echo "variable is set"	
fi


Comment récupérer une variable de nom variable

#!/bin/bash
 
A="abcd dcba"
B=A
C=${!B}
echo $C



Comment lire un mot de passe

on utilise l'option -s de read

#!/bin/bash
 
read -s password



Comment faire des opérations mathématiques sur des variables

#!/bin/bash
 
$ A=2
$ B=3
$ C=$((A+B))
$ echo $C



Comment utiliser les expressions régulières

#!/bin/bash
if [[ $NUMBER =~ ^[0-9]+$ ]]; then
    echo ceci est un nombre
else
    echo ceci n'est pas un nombre
fi



Liens externes