{{tag>dev shell bash debug}}
====== Débogage de scripts shell ======
Avant toute exécution, on peut vo... exec) et le scrit à vérifier en paramètre:
<code bash>
bash -n monscript.sh
</code>
Le shell Bash peut être invoqué avec l'option **-x** pour activer le mode trac
{{tag>dev bash script option argument}}
====== Gestion des options et arguments dans les scripts Bash ======
Les arguments transmis au script bash courant sont accessibles via les variables **$1** à **$n*... .
* **getopts** est intégré a l’interpréteur **bash** (primitve).
* **getopt** est un binaire.
La
{{tag>dev bash shell move déplacer}}
====== Déplacer les fichiers cachés avec mv ======
Lors de la p... ppement n'inclus pas les fichiers cachés :
<code bash>
# Le dossier courant contient 3 fichiers
# dont ... otglob =====
Parmi les options de paramétrage de bash, **dotglob** permet de modifier ce comportement par défaut.
<code bash>
# Afficher la valeur de l'option
shopt dotglob
{{tag>dev bash shell}}
====== Bash: Accès par indirection ======
L'accès à une valeur par indirection est possible e... le wiki [[cours:informatique:fun_mooc:maitrise_du_bash_univ-reunion:230_constructions_syntaxiques#etapes... tion caractère sert à cela, on écrit donc:
<code bash>
repertoire=HOME
# première substitution
echo \$
{{tag>dev bash code redirection}}
====== Bash : redirection des entrées/sorties ======
Pour un shell interactif l'e... listant le contenu de **''/proc/$$/fd''**
<code bash>
# Afficher les descripteurs ouverts pour le shel... e fichiers voir la note file descriptors.
<note>
Bash a également un descripteur 255 supplémentaire poi
{{tag>dev bash variable code snippet exemple guide howto}}
====== Bash : vérifier l’existence d'une variable ======
Pour vérifier qu'une variable est définie en bash, une méthode simple consiste à utiliser la primitive **declare**:
<code bash>
# Retourne 0 si MAVAR existe
declare -p MAVAR &>
{{tag>dev bash exemple code snippet guide howto}}
:TODO_DOCUPDATE:
====== Bash : vérifier le mode d'exécution interactif ======
Lorsque Bash est lancé en mode interactif l'option -i est préc... puis par lectures successives des fichiers ''/etc/bash.bashrc'' et ''~/.bashrc''.
:TODO: Tester le fonc
{{tag>dev bash aide manuel man todo}}
:TODO_DOCUPDATE:
====== Aide et manuel depuis le bash ======
La commande **apropos** permet de recherc... ctions du manuel (équivaut à ''man -k'').
<code bash>
apt-get install man-db manpages
</code>
Les pag... contenant des pages de manuel généralistes:
<code bash>
apt-cache pkgnames manpages
</code>
<file>
manp
{{tag>dev bash convertion column colonne row}}
====== Bash: convertir une colonne en ligne ======
On cherche à refo... onvertir des données présentées en colonne:
<code bash>
echo $(cat data_in_column.txt)
</code>
===== t... NL par des espaces avec la commande **tr**:
<code bash>
$ cat data_in_column.txt | tr '\n' ' '
</code>
{{tag>dev sysadmin bash case switch}}
====== Structure de contrôle case ======
Au sein des scripts bash, la structure de contrôle **case** ou **selon** (... aleurs attendues pour une variable donnée.
<code bash>
case "$C" in
"1")
do_this()
;;
"2" | "3"... la structure case dans les scripts concerne [[dev/bash/arguments_et_options_de_script|le traitement des
{{tag>dev bash base conversion binaire}}
====== Changer la base d'un nombre en bash ======
L'utilitaire **bc** peut être utilisé pou... iables prédéfinies **ibase** et **obase**:
<code bash>
echo "obase=10; ibase=16; a=AC; print(a);" | bc
... == Conversion du binaire en décimal =====
<code bash>
echo "obase=10; ibase=2; a=11111100011; print(a)
{{tag>dev bash shell}}
====== Bash: Générer un nombre aléatoire ======
Pour obtenir un nombre aléatoire dans l'inter... ste est disponible via l'opérateur modulo.
<code bash>
# La fonction alea écrit sur la sortie standard... itution de commande : **$( ... )**
</note>
<code bash>
n1=$( alea 100 )
n2=$( alea 33 )
echo $n1 $n2
<
{{tag>bash exemple extrait guide how-to code snippet}}
====== Bash : vérifier les droits d'accès sur un fichier ====... ès d'un fichier ou d' un dossier depuis un script Bash, on peut utiliser la commande **stat** avec l'opt... oits d'accès au fichier sous forme octale:
<code bash>
# Le retour de la commande ls est adapté au mode