User Tools

Site Tools


informatique:linux:programmation_shell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
informatique:linux:programmation_shell [2021/04/07 08:15] – [Expression sur les fichiers] if -t pteuinformatique:linux:programmation_shell [2022/10/17 21:28] – [trim] pteu
Line 944: Line 944:
 </code> </code>
  
 +=====trim (suppression des espaces dans une chaîne)=====
 +
 +bash ne possède pas de fonction prédéfinie pour "trimmer" les chaînes de caractère. **trim** est une fonction, habituellement incluse dans les langages de programmation, permettant de supprimer les espaces parasites avant et après une chaîne : par exemple " cette chaîne" ou " celle-ci       ".
 +
 +Pour faire cette office il existe plusieurs possibilités d'afficher les cellules du tableau suivant sans les espaces :
 +<code bash>
 +arr=('foo bar' 'test@domain.com ' \
 +' test@domain.com ' '    test@domain.com         ')
 +</code>
 +
 +  * en utilisant la substitution de caractère dans les variables, en activant le //globbing étendu// (des motifs d'expressions régulières prédéfinis) :
 +<code bash>
 +shopt -s extglob                     # activation des extended glob
 +# (pour reconnaître [[:blank:]] qui définit l'ensemble des espaces et tabulations)
 +arr=( "${arr[@]/#+([[:blank:]])/}" ) # suppression des espaces de début de chaîne
 +arr=( "${arr[@]/%+([[:blank:]])/}" ) # suppression des espaces de fin de chaîne
 +</code>
 +
 +  * avec ''mapfile'' et ''set --''
 +<code bash>
 +function trim() {
 + mapfile -t t_input<<<"$*"    # place chaque paramètre dans une cellule du tableau (un par ligne)
 + [[ ${#t_input[@]} -eq 0 ]] && { echo "Aucun texte à afficher"; exit 1; }
 + set -- ${t_input[@]}         # affecte chaque case du tableau à un paramètre ($1, $2, etc)
 + printf '%s\n' "$*"           # affiche chaque paramètre suivi d'un saut de ligne
 +}
 +trim "${arr[@]}"
 +</code>
 ====== Ressources ====== ====== Ressources ======
  
Line 951: Line 979:
   * https://www.shellcheck.net : super moulinette en ligne pour analyser un script et recommander des améliorations (exsite aussi en package Linux : ''shellcheck''). A utiliser sans modération !   * https://www.shellcheck.net : super moulinette en ligne pour analyser un script et recommander des améliorations (exsite aussi en package Linux : ''shellcheck''). A utiliser sans modération !
   * [[https://google.github.io/styleguide/shellguide.html|Shell Style Guide]] by Google   * [[https://google.github.io/styleguide/shellguide.html|Shell Style Guide]] by Google
 +  * [[https://betterdev.blog/minimal-safe-bash-script-template/|Minimal safe Bash script template]] (betterdev.blog)
 +  * [[https://github.com/pforret/bashew/blob/master/README.md|bashew]] / [[https://blog.forret.com/portfolio/bashful/|bashful]] : un outil de création de script bash et le blog de son auteur, Peter Forret
 +  * [[https://github.com/ralish/bash-script-template|bash-script-template]]
informatique/linux/programmation_shell.txt · Last modified: 2023/10/02 13:35 by pteu