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
documentation:tools:langages:bash [2023/01/13 08:47] – [string replace] ltaulelldocumentation:tools:langages:bash [2023/01/13 08:48] (Version actuelle) – supprimée ltaulell
Ligne 1: Ligne 1:
-====== Bash ====== 
- 
-:!: le shell par défaut à la création du compte est ''/bin/bash''. Vous pouvez demander à en changer via [[contact:forms:accueil|les formulaires web]]. 
- 
- 
-<note important>Utilisez **shellcheck** !!</note> 
- 
- 
- 
- 
-===== Exemples & Astuces ===== 
- 
- 
- 
- 
-==== pattern matching ==== 
- 
-<code bash> 
-#! /bin/bash 
- 
-VARIABLE="Let's test this string!" 
- 
-# This is for regular expressions: 
-if [[ "$VARIABLE" =~ "Let's.*ring" ]] 
-then 
-    echo "matched" 
-else 
-    echo "nope" 
-fi 
- 
-# And here we have Bash Patterns: 
-if [[ "$VARIABLE" == L*ing! ]] 
-then 
-    echo "matched" 
-else 
-    echo "nope" 
-fi 
-</code> 
- 
-<code bash> 
-#! /bin/bash 
- 
-VARIABLE="Let's test this string!" 
- 
-# This is for regular expressions: 
-if [[ "$VARIABLE" =~ "Let's.*ring" ]] 
-then 
-    echo "#1 matched" 
-else 
-    echo "#1 nope" 
-fi 
- 
-if [[ "$VARIABLE" =~ Let\'s.*ring ]] 
-then 
-    echo "#2 matched" 
-else 
-    echo "#2 nope" 
-fi 
-</code> 
- 
-Results: 
-#1 nope 
-#2 matched 
- 
-To get #1 matching remove quotes around RegExpr or set compat31 : ''shopt -s compat31'' 
- 
-<code bash> 
-#!/bin/sh 
- 
-thisString="1 2 3 4 5" 
-searchString="1 2" 
-# if you single quote your input, you could do this 
-# searchString=$1 
- 
-case $thisString in 
-  # match exact string 
-  "$searchString") echo yep, it matches exactly;; 
-   
-  # match start of string 
-  "$searchString"*) echo yep, it matches at the start ;; 
- 
-  # match end of string 
-  *"$searchString") echo yep, it matches at the end ;; 
- 
-  # searchString can be anywhere in thisString 
-  *"$searchString"*) echo yep, it matches in the middle somewhere ;; 
-   
-  *) echo nope ;; 
-esac 
-</code> 
- 
- 
-==== Tableaux associatifs ==== 
- 
-On peut nommer les entrées d'un tableau (l'index). 
- 
-  * astuce : 
- 
-<code bash> 
-tab[wwsi]="whatever/wwsi" 
-tab[wwoz]="whatever/to/wwoz" 
-tab[fip]="http://audio.scdn.arkena.com/11016/fip-midfi128.mp3" 
-</code> 
- 
-Lister le tableau associatif : 
- 
-  * brute : 
-<code bash> 
-for i in "${tab[@]}"; do echo "${i}"; done 
-</code> 
- 
-  * astuce (boucle induite) : 
-<code bash> 
-printf "%s\n" "${tab[@]}"; done 
-</code> 
- 
-Simplification de code résultante : 
- 
-Parcours du tableau, connaissant l'index (ici $value). 
- 
-  * Avant : 
-<code bash> 
-tindex=$(for i in "${tab[@]}"; do echo "${i}"; done | grep "${value}") 
-for ((i=0; i<${#tab[@]}; i++)) 
-do 
-  if [[ "$tindex" == "{tab[$i]}" ]] 
-  then 
-    data="${tab[$i]}" 
-  fi 
-done 
-</code> 
- 
-  * Aprés : 
-<code bash> 
-tindex=$(printf "%s\n" "${tab[@]}" | grep "${value}") 
-data="${tab[$tindex]}" 
-</code> 
- 
-<note warning>Tout ces exemples de scripts bash n'ont pas forcément été testé avec shellcheck. **Faites-le !**</note> 
  
documentation/tools/langages/bash.1673599654.txt.gz · Dernière modification : 2023/01/13 08:47 de ltaulell