Meilleures pratiques pour créer un script Shell sous GNU / Linux - Partie 2

Avant de lire cet article, je vous recommande de lire la première partie de cet article, intitulée « Meilleures pratiques pour la création d'un script shell sous GNU/Linux ».

Shell Scripting

Voici un bref résumé des points les plus importants du message précédent :

A) Le Shebang idéal devrait s'écrire comme suit :

#! / usr / bin / env bash.

Remarque : Remplacez le mot « bash » par le nom de votre choix.

B) Pour obtenir un excellent mode BASH STRICT ou SÛR (Bash Strict Mode / BSM), nous avons proposé les alternatives suivantes :

B.1) Configuration de la section de débogage:

  1. set -o élevé
  2. set -o substantif
  3. set -o échec du tuyau
  4. # set -o xtrace

Toutefois, dans cette nouvelle entrée, afin de minimiser le nombre de lignes de code, nous suggérons le mode BASH STRICT ou SÛR suivant (Bash Strict Mode / BSM) :

set -eou pipefail

Avec ce BSM, nous obtenons exactement le même résultat qu'avec les 3 lignes précédentes.

Ma recommandation personnelle est la suivante : une fois votre script shell créé, ajoutez la ou les lignes BSM pour commencer le débogage et l’optimisation, et ainsi le rendre hautement fonctionnel. Si vous le souhaitez, ajoutez l’ option `-x` au BSM pour obtenir le même résultat que l’activation de la ligne ` set -o xtrace` dans la méthode précédente ; votre ligne BSM devrait donc ressembler à ceci :

set -eoux pipefail

B.2) Configuration de la section de sortie des variables configurées:

IFS=$'\n\t'

L'ajout de cette ligne modifie la variable « Séparateur de champs interne » , permettant une meilleure visualisation et/ou capture des mots (champs) au sein d'une chaîne. Activez ou désactivez-la selon vos besoins.

Avec ces paramètres typiques:


    #!/bin/bash
    IFS=$' '
    items="a b c"
    for x in $items; do
        echo "$x"
    done

    IFS=$'\n'
    for y in $items; do
        echo "$y"
    done

Les sorties des variables seraient obtenues de la manière suivante:


a
b
c
a b c

Avec les paramètres par défaut et recommandés:


    #!/bin/bash
    names=(
      "Aaron Maxwell"
      "Wayne Gretzky"
      "David Beckham"
      "Anderson da Silva"
    )

    echo "Con el valor por defecto de la variable IFS..."
    for name in ${names[@]}; do
      echo "$name"
    done

    echo ""
    echo "Con el Modo BSM para el valor de la variable IFS activado..."
    IFS=$'\n\t'
    for name in ${names[@]}; do
      echo "$name"
    done

Les sorties des variables seraient obtenues de la manière suivante:


Con el valor por defecto de la variable IFS...
Aaron
Maxwell
Wayne
Gretzky
David
Beckham
Anderson
da
Silva

Con el Modo BSM para el valor de la variable IFS activado...
Aaron Maxwell
Wayne Gretzky
David Beckham
Anderson da Silva

B.3) Section Configuration de la configuration par défaut du terminal d'exécution:

setterm --reset

L'ajout de cette ligne réinitialise complètement la session et les paramètres d'exécution du terminal où le script shell est lancé . Activez-la ou non, selon vos besoins.

Grâce à cela, nous disposerons d'un BSM très utile et efficace pour créer un excellent script shell.

Enfin, nous allons explorer ce que ce script Shell devrait avoir ci-dessous:

  • Une section informative sur le créateur et le programme:

###########################################################
# SECCIÓN INFORMATIVA SOBRE EL CREADOR Y EL PROGRAMA
###########################################################

###########################################################
#                             MI PAÍS 
#
# NOMBRE: 
# VERSIÓN: 
# TIPO DE PROGRAMA:
# FUNCIÓN:
# NOMBRE CÓDIGO:
# PAÍS ORIGEN:
# CREADO POR:
# EMAIL:
# NOMBRE FACEBOOK:
# PAGINA PERSONAL FACEBOOK:
# COMUNIDAD FACEBOOK:
# TWITTER:
# TELÉFONO:
# PROMOCIONADO POR:
# PAGINA WEB DEL PROYECTO TIC - TAC:
# FECHA DE LANZAMIENTO DE LA PRIMERA VERSIÓN (1.0):
# FECHA DE LANZAMIENTO DE LA VERSIÓN ACTUAL (8.0+0):
# FECHA DE ULTIMA ACTUALIZACIÓN:
###########################################################

  • Une section informative sur la licence du programme:

###########################################################
# SECCIÓN INFORMATIVA SOBRE EL LICENCIAMIENTO DEL PROGRAMA
###########################################################

###########################################################
# NOMBRE DEL SCRIPT DE SHELL
###########################################################
#
# Derechos de autor:
# Copyleft (C) Año - Creador
# 
# Licenciamiento:
#
# El NOMBRE DEL SCRIPT DE SHELL no viene con ninguna garantía. El 
# Autor no se hace responsable si se al aplicarse el S.O., se
# corrompe, daña o inutiliza.
#
# El NOMBRE DEL SCRIPT DE SHELL es una aplicación de Software 
# Libre, por lo tanto usted puede redistribuirlo y / o modificarlo 
# bajo los términos de la Licencia Pública General de GNU
# publicada por la free Software Foundation, o sea, la versión 3
# ó versión posterior, según sea su preferencia.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de
# COMERCIALIZACIÓN o IDONEIDAD para un propósito particular.
# Vea la Licencia Publica General para más detalles.
#
# Procure obtener una copia de la Licencia Pública General de GNU
# para estar al tanto sobre lo estipulado por la misma.
#
# Consúltela en:
#
# http://www.gnu.org/licenses/licenses.es.html
# http://www.gnu.org/licenses/license-list.html
# http://www.gnu.org/licenses/gpl-howto.es.html
# http://www.gnu.org/help/evaluation.html
# http://www.gnu.org/licenses/gpl-3.0.html#howto
#
# Más Información:
#
# http://www.creativecommonsvenezuela.org.ve/cc-licencias
# http://creativecommons.org/choose/?lang=es_ES
#
# Por lo tanto, Si usted hace alguna modificación en esta
# aplicación o toma una porción de él, deberá siempre mencionar al
# autor original de la misma:
#
# Desarrollador : 
# Nick          : 
# Twitter       : 
# Facebook      : 
# Telegram      : 
# Canal Telegram:
#
# Este SCRIPT tiene como propósito:
#
# 1.- PROPÓSITO 1: ABCDEFGHIJKLMNÑOPQRSTUVXYZ
#
# 2.- PROPÓSITO 2: ABCDEFGHIJKLMNÑOPQRSTUVXYZ
#
############################################################
# NOMBRE DEL SCRIPT DE SHELL
############################################################

J'espère que cette deuxième partie des « Bonnes pratiques pour la création d'un script shell sous GNU/Linux » vous permettra d'examiner attentivement chaque aspect de la création d'un script shell et d'en comprendre les raisons . En d'autres termes, j'espère que ces conseils vous aideront à créer de meilleurs scripts shell , non pas tant pour vous-même, mais pour les utilisateurs ou les administrateurs système qui devront les gérer. Ainsi, ils n'auront pas à se plonger dans la tâche fastidieuse et complexe de comprendre votre code, son fonctionnement et les raisons de son dysfonctionnement.

Jusqu'aux prochains articles sur Shell Scripting!


Ajouter comme source préférée dans Google