Valeurs de retour des fonctions Bash

ShellShellBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel complet explore les valeurs de retour des fonctions Bash, vous fournissant les connaissances et les techniques essentielles pour travailler efficacement avec les fonctions dans les scripts Bash. Que vous soyez nouveau dans le scripting shell ou que vous cherchiez à améliorer vos compétences, ce guide vous offre une compréhension solide de la façon de définir, d'appeler et de gérer les valeurs de retour des fonctions. Ces compétences vous permettent d'écrire des scripts shell plus robustes et flexibles pour diverses tâches d'automatisation.

Créer votre première fonction Bash

Les fonctions Bash sont des blocs de code réutilisables qui aident à organiser vos scripts de manière plus efficace. Avant d'approfondir les valeurs de retour, comprenons d'abord comment créer et appeler une fonction.

Créer une fonction de base

Créons notre première fonction Bash. Ouvrez une fenêtre de terminal et tapez :

cd ~/project
mkdir -p bash_functions
cd bash_functions
create directory

Maintenant, créons une simple fonction dans un nouveau script. Créez un fichier nommé first_function.sh en utilisant nano :

touch first_function.sh

Ajoutez le contenu suivant au fichier :

#!/bin/bash

## Define a simple greeting function
say_hello() {
  echo "Hello, world!"
}

## Call the function
say_hello

## Define a function that accepts arguments
greet_person() {
  echo "Hello, $1!"
}

## Call the function with an argument
greet_person "Alice"
greet_person "Bob"

Rendez le script exécutable :

chmod +x first_function.sh

Exécutez maintenant le script :

./first_function.sh

Vous devriez voir la sortie suivante :

Hello, world!
Hello, Alice!
Hello, Bob!

Explication de la syntaxe des fonctions

En Bash, il existe deux façons de définir des fonctions :

  1. En utilisant la syntaxe standard :
function_name() {
  ## Commands
}
  1. En utilisant le mot-clé function :
function function_name {
  ## Commands
}

Les deux styles fonctionnent de la même manière, mais le premier est plus couramment utilisé et conforme à la norme POSIX.

Accéder aux arguments de la fonction

À l'intérieur d'une fonction, vous pouvez accéder aux arguments passés à la fonction en utilisant des paramètres positionnels :

  • $1, $2, $3, etc. font référence au premier, deuxième, troisième argument, et ainsi de suite
  • $0 fait référence au nom de la fonction ou au nom du script
  • $# donne le nombre d'arguments
  • $@ contient tous les arguments sous forme de chaînes de caractères distinctes
  • $* contient tous les arguments sous forme d'une seule chaîne de caractères

Créons un nouveau fichier pour pratiquer avec les arguments de fonction :

touch function_args.sh

Ajoutez le contenu suivant :

#!/bin/bash

show_args() {
  echo "Function name: $0"
  echo "First argument: $1"
  echo "Second argument: $2"
  echo "Number of arguments: $#"
  echo "All arguments: $@"
}

echo "Calling function with three arguments:"
show_args apple banana cherry

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x function_args.sh
./function_args.sh

Vous devriez voir une sortie similaire à :

Calling function with three arguments:
Function name: ./function_args.sh
First argument: apple
Second argument: banana
Number of arguments: 3
All arguments: apple banana cherry

Cette compréhension de base des définitions de fonction et de la gestion des arguments constitue la base pour travailler avec les valeurs de retour de fonction dans les étapes suivantes.

Comprendre les codes de retour des fonctions

Chaque commande en Bash, y compris les fonctions, produit un code de retour (également appelé statut de sortie). Cette valeur numérique indique si la commande a réussi ou échoué. Ce code de retour est fondamental pour la gestion des erreurs dans les scripts Bash.

Codes de retour de base

En Bash :

  • Un code de retour de 0 indique un succès
  • Toute valeur non nulle (de 1 à 255) indique une erreur ou une condition anormale

Créons un script pour démontrer cela :

cd ~/project/bash_functions
touch return_codes.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Function that always succeeds
succeed() {
  echo "This function succeeds"
  return 0
}

## Function that always fails
fail() {
  echo "This function fails"
  return 1
}

## Call the functions and check their return codes
succeed
echo "Return code of succeed: $?"

fail
echo "Return code of fail: $?"

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x return_codes.sh
./return_codes.sh

Vous devriez voir :

This function succeeds
Return code of succeed: 0
This function fails
Return code of fail: 1

Capturer les codes de retour

La variable spéciale $? contient le code de retour de la commande ou de la fonction exécutée en dernier. Cette valeur est importante pour l'exécution conditionnelle et la gestion des erreurs.

Créons un autre script pour pratiquer l'utilisation des codes de retour pour la logique conditionnelle :

touch check_file.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Function to check if a file exists
file_exists() {
  local filename="$1"

  if [ -f "$filename" ]; then
    echo "File $filename exists"
    return 0
  else
    echo "File $filename does not exist"
    return 1
  fi
}

## Test the function with files that exist and don't exist
file_exists "return_codes.sh"
if [ $? -eq 0 ]; then
  echo "Great! The file was found."
else
  echo "Too bad. The file was not found."
fi

echo ""

file_exists "non_existent_file.txt"
if [ $? -eq 0 ]; then
  echo "Great! The file was found."
else
  echo "Too bad. The file was not found."
fi

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x check_file.sh
./check_file.sh

Vous devriez voir une sortie similaire à :

File return_codes.sh exists
Great! The file was found.

File non_existent_file.txt does not exist
Too bad. The file was not found.

Utilisation des codes de retour dans les conditions

Le code de retour peut être utilisé directement dans les expressions conditionnelles en utilisant les opérateurs && (ET) et || (OU) :

touch conditional_return.sh

Ajoutez le contenu suivant :

#!/bin/bash

check_number() {
  local num=$1

  if [ $num -gt 10 ]; then
    return 0 ## Success if number is greater than 10
  else
    return 1 ## Failure if number is not greater than 10
  fi
}

## Using conditional operators with return codes
check_number 15 && echo "Number is greater than 10"
check_number 5 || echo "Number is not greater than 10"

## This line runs only if check_number succeeds
check_number 20 && {
  echo "Number is greater than 10"
  echo "Performing additional operations..."
}

## This line runs only if check_number fails
check_number 3 || {
  echo "Number is not greater than 10"
  echo "Taking alternative actions..."
}

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x conditional_return.sh
./conditional_return.sh

La sortie devrait être :

Number is greater than 10
Number is not greater than 10
Number is greater than 10
Performing additional operations...
Number is not greater than 10
Taking alternative actions...

Comprendre le fonctionnement des codes de retour est essentiel pour écrire des scripts robustes capables de gérer correctement les erreurs et de prendre des décisions en fonction du succès ou de l'échec des opérations.

Travailler avec des valeurs de retour personnalisées

Bien que les codes de retour soient utiles pour indiquer le succès ou l'échec d'une opération, ils sont limités aux nombres compris entre 0 et 255. Pour retourner des données réelles depuis des fonctions, nous devons utiliser d'autres techniques.

Méthode 1 : Utiliser Echo pour retourner des valeurs

La façon la plus courante de retourner des valeurs réelles depuis des fonctions consiste à utiliser echo ou d'autres commandes de sortie, puis à capturer cette sortie.

Créons un script pour démontrer cette technique :

cd ~/project/bash_functions
touch return_values.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Function that returns a value using echo
get_username() {
  echo "labex"
}

## Function that returns a calculated value
add_numbers() {
  local sum=$(($1 + $2))
  echo $sum
}

## Capture the returned values
username=$(get_username)
echo "The username is: $username"

result=$(add_numbers 5 7)
echo "The sum of 5 and 7 is: $result"

## You can also use the returned value directly
echo "Calculating again: $(add_numbers 10 20)"

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x return_values.sh
./return_values.sh

Vous devriez voir :

The username is: labex
The sum of 5 and 7 is: 12
Calculating again: 30

Méthode 2 : Utiliser des variables globales

Une autre approche consiste à modifier des variables globales à l'intérieur de la fonction :

touch global_return.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Declare global variables
FULL_NAME=""
USER_AGE=0

## Function that sets global variables
set_user_info() {
  FULL_NAME="$1 $2"
  USER_AGE=$3

  ## Return success
  return 0
}

## Call the function
set_user_info "John" "Doe" 30

## Use the global variables that were set by the function
echo "Full name: $FULL_NAME"
echo "Age: $USER_AGE"

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x global_return.sh
./global_return.sh

Sortie :

Full name: John Doe
Age: 30

Méthode 3 : Retourner plusieurs valeurs

Explorons comment retourner plusieurs valeurs depuis une fonction :

touch multiple_returns.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Function that returns multiple values separated by a delimiter
get_system_info() {
  local hostname=$(hostname)
  local kernel=$(uname -r)
  local uptime=$(uptime -p)

  ## Return multiple values separated by semicolons
  echo "$hostname;$kernel;$uptime"
}

## Capture the output and split it
system_info=$(get_system_info)

## Split the values using IFS (Internal Field Separator)
IFS=';' read -r host kernel up <<< "$system_info"

## Display the values
echo "Hostname: $host"
echo "Kernel version: $kernel"
echo "Uptime: $up"

## Alternative method using an array
get_user_details() {
  local details=("John Doe" "[email protected]" "Developer")
  printf "%s\n" "${details[@]}"
}

## Capture the output into an array
mapfile -t user_details < <(get_user_details)

echo ""
echo "User information:"
echo "Name: ${user_details[0]}"
echo "Email: ${user_details[1]}"
echo "Role: ${user_details[2]}"

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x multiple_returns.sh
./multiple_returns.sh

La sortie devrait afficher les informations de votre système suivies des détails de l'utilisateur :

Hostname: ubuntu
Kernel version: 5.15.0-1033-azure
Uptime: up 2 hours, 15 minutes

User information:
Name: John Doe
Email: [email protected]
Role: Developer

Le nom d'hôte, la version du noyau et le temps de fonctionnement réels varieront en fonction de votre système.

Ces méthodes démontrent différentes façons de retourner des valeurs depuis des fonctions au-delà des simples codes de retour. Chaque approche a ses avantages en fonction de vos besoins spécifiques.

Utilisation pratique des fonctions dans un script

Maintenant que nous savons comment définir des fonctions et gérer leurs valeurs de retour, construisons un script pratique qui illustre ces concepts en action. Nous allons créer une utilitaire de gestion de fichiers qui utilise des fonctions avec différentes méthodes de retour.

Création de l'utilitaire de gestion de fichiers

Créons un script complet qui effectue diverses opérations sur les fichiers :

cd ~/project/bash_functions
touch file_manager.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Function to check if a file exists
## Returns 0 if file exists, 1 if it doesn't
file_exists() {
  if [ -f "$1" ]; then
    return 0
  else
    return 1
  fi
}

## Function to get file size in bytes
## Returns the size via echo
get_file_size() {
  if file_exists "$1"; then
    ## Use stat to get file size in bytes
    local size=$(stat -c %s "$1")
    echo "$size"
  else
    echo "0"
  fi
}

## Function to count lines in a file
## Returns line count via echo
count_lines() {
  if file_exists "$1"; then
    local lines=$(wc -l < "$1")
    echo "$lines"
  else
    echo "0"
  fi
}

## Function to get file information
## Returns multiple values using a delimiter
get_file_info() {
  local filename="$1"

  if file_exists "$filename"; then
    local size=$(get_file_size "$filename")
    local lines=$(count_lines "$filename")
    local modified=$(stat -c %y "$filename")
    local permissions=$(stat -c %A "$filename")

    ## Return all info with semicolons as delimiters
    echo "$size;$lines;$modified;$permissions"
  else
    echo "0;0;N/A;N/A"
  fi
}

## Function to create a test file
create_test_file() {
  local filename="$1"
  local lines="$2"

  ## Create or overwrite the file
  > "$filename"

  ## Add the specified number of lines
  for ((i = 1; i <= lines; i++)); do
    echo "This is line $i of the test file." >> "$filename"
  done

  ## Return success if file was created
  if file_exists "$filename"; then
    return 0
  else
    return 1
  fi
}

## Main script execution starts here
echo "File Management Utility"
echo "----------------------"

## Create a test file
TEST_FILE="sample.txt"
echo "Creating test file with 10 lines..."
if create_test_file "$TEST_FILE" 10; then
  echo "File created successfully."
else
  echo "Failed to create file."
  exit 1
fi

## Check if file exists
echo ""
echo "Checking if file exists..."
if file_exists "$TEST_FILE"; then
  echo "File '$TEST_FILE' exists."
else
  echo "File '$TEST_FILE' does not exist."
fi

## Get file size
echo ""
echo "Getting file size..."
size=$(get_file_size "$TEST_FILE")
echo "File size: $size bytes"

## Count lines
echo ""
echo "Counting lines in file..."
lines=$(count_lines "$TEST_FILE")
echo "Line count: $lines"

## Get all file information
echo ""
echo "Getting complete file information..."
file_info=$(get_file_info "$TEST_FILE")

## Split the returned values
IFS=';' read -r size lines modified permissions <<< "$file_info"

echo "File: $TEST_FILE"
echo "Size: $size bytes"
echo "Lines: $lines"
echo "Last modified: $modified"
echo "Permissions: $permissions"

echo ""
echo "File content preview:"
head -n 3 "$TEST_FILE"
echo "..."

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x file_manager.sh
./file_manager.sh

Vous devriez voir une sortie similaire à :

File Management Utility
----------------------
Creating test file with 10 lines...
File created successfully.

Checking if file exists...
File 'sample.txt' exists.

Getting file size...
File size: 300 bytes

Counting lines in file...
Line count: 10

Getting complete file information...
File: sample.txt
Size: 300 bytes
Lines: 10
Last modified: 2023-11-04 12:34:56.789012345 +0000
Permissions: -rwxrwxr-x

File content preview:
This is line 1 of the test file.
This is line 2 of the test file.
This is line 3 of the test file.
...

Les valeurs exactes de la taille du fichier, de l'heure de modification et des autorisations varieront.

Analyse du script

Notre utilitaire de gestion de fichiers illustre plusieurs concepts clés :

  1. Codes de retour - Les fonctions file_exists() et create_test_file() retournent 0 en cas de succès et 1 en cas d'échec.
  2. Retour de valeurs avec echo - Les fonctions get_file_size() et count_lines() retournent des valeurs numériques via echo.
  3. Retour de plusieurs valeurs - La fonction get_file_info() retourne plusieurs valeurs en utilisant un délimiteur.
  4. Composition de fonctions - Certaines fonctions appellent d'autres fonctions, montrant ainsi comment construire des fonctionnalités complexes.
  5. Exécution conditionnelle - Le script utilise des instructions if avec des codes de retour pour contrôler le flux du programme.

Cet exemple pratique montre comment combiner diverses techniques de fonction pour créer une utilitaire utile. Le script illustre une bonne gestion des erreurs, la composition de fonctions et différentes méthodes de retour de valeurs.

Gestion des erreurs et meilleures pratiques pour les fonctions

Pour notre dernière section, explorons les techniques de gestion des erreurs et les meilleures pratiques pour les fonctions Bash. Une bonne gestion des erreurs est cruciale pour créer des scripts robustes et maintenables.

Création d'un script avec gestion des erreurs

Créons un nouveau script qui illustre une gestion robuste des erreurs :

cd ~/project/bash_functions
touch error_handling.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Enable error handling
set -e ## Exit immediately if a command exits with non-zero status

## Define a function to log messages
log_message() {
  local level="$1"
  local message="$2"
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}

## Function to validate a number is positive
validate_positive() {
  local num="$1"
  local name="$2"

  ## Check if the argument is a number
  if ! [[ "$num" =~ ^[0-9]+$ ]]; then
    log_message "ERROR" "$name must be a number"
    return 1
  fi

  ## Check if the number is positive
  if [ "$num" -le 0 ]; then
    log_message "ERROR" "$name must be positive"
    return 2
  fi

  return 0
}

## Function that divides two numbers
divide() {
  local numerator="$1"
  local denominator="$2"

  ## Validate inputs
  validate_positive "$numerator" "Numerator" || return $?
  validate_positive "$denominator" "Denominator" || return $?

  ## Check for division by zero
  if [ "$denominator" -eq 0 ]; then
    log_message "ERROR" "Division by zero is not allowed"
    return 3
  fi

  ## Perform division
  local result=$(echo "scale=2; $numerator / $denominator" | bc)
  echo "$result"
  return 0
}

## Function to safely get user input
get_number() {
  local prompt="$1"
  local input

  while true; do
    read -p "$prompt: " input

    if validate_positive "$input" "Input"; then
      echo "$input"
      return 0
    else
      log_message "WARN" "Invalid input. Please try again."
    fi
  done
}

## Disable automatic exit on error for the main script
set +e

## Main script logic
log_message "INFO" "Starting division calculator"

## Test with valid values
result=$(divide 10 2)
exit_code=$?

if [ $exit_code -eq 0 ]; then
  log_message "INFO" "10 / 2 = $result"
else
  log_message "ERROR" "Division failed with code $exit_code"
fi

## Test with invalid values
echo ""
log_message "INFO" "Testing with invalid values"
divide 0 5
log_message "INFO" "Exit code: $?"

divide 10 0
log_message "INFO" "Exit code: $?"

divide abc 5
log_message "INFO" "Exit code: $?"

## Interactive mode
echo ""
log_message "INFO" "Interactive mode"
echo "Let's perform a division. Enter positive numbers."

## Get user input safely
num1=$(get_number "Enter first number")
num2=$(get_number "Enter second number")

## Perform division
result=$(divide "$num1" "$num2")
exit_code=$?

if [ $exit_code -eq 0 ]; then
  log_message "INFO" "$num1 / $num2 = $result"
else
  log_message "ERROR" "Division failed with code $exit_code"
fi

log_message "INFO" "Calculator finished"

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x error_handling.sh
./error_handling.sh

Vous verrez une sortie similaire à la suivante et vous serez invité à entrer des nombres :

[2023-11-04 13:45:23] [INFO] Starting division calculator
[2023-11-04 13:45:23] [INFO] 10 / 2 = 5.00

[2023-11-04 13:45:23] [INFO] Testing with invalid values
[2023-11-04 13:45:23] [ERROR] Numerator must be positive
[2023-11-04 13:45:23] [INFO] Exit code: 2
[2023-11-04 13:45:23] [ERROR] Division by zero is not allowed
[2023-11-04 13:45:23] [INFO] Exit code: 3
[2023-11-04 13:45:23] [ERROR] Numerator must be a number
[2023-11-04 13:45:23] [INFO] Exit code: 1

[2023-11-04 13:45:23] [INFO] Interactive mode
Let's perform a division. Enter positive numbers.
Enter first number:

Entrez un nombre, par exemple 20. Ensuite, vous serez invité à entrer le deuxième nombre :

Enter second number:

Entrez un autre nombre, par exemple 4, et vous devriez voir :

[2023-11-04 13:45:30] [INFO] 20 / 4 = 5.00
[2023-11-04 13:45:30] [INFO] Calculator finished

Meilleures pratiques pour les fonctions Bash

Sur la base de nos exemples, voici quelques meilleures pratiques pour travailler avec les fonctions Bash :

  1. Ajoutez des commentaires descriptifs - Documentez ce que chaque fonction fait, ses paramètres et ses valeurs de retour.
  2. Utilisez des noms de fonction significatifs - Choisissez des noms qui indiquent clairement le but de la fonction.
  3. Validez les paramètres d'entrée - Vérifiez les entrées pour éviter les erreurs.
  4. Utilisez des variables locales - Évitez les collisions de noms de variables avec le mot-clé local.
  5. Retournez des codes de sortie appropriés - Utilisez des codes de retour conventionnels (0 pour le succès, non nul pour les erreurs).
  6. Mettez en œuvre une bonne gestion des erreurs - Enregistrez les erreurs et gérez-les de manière gracieuse.
  7. Gardez les fonctions ciblées - Chaque fonction devrait faire une chose bien.
  8. Utilisez la composition de fonctions - Construisez des fonctionnalités complexes en combinant des fonctions plus simples.
  9. Documentez les valeurs de retour - Documentez clairement comment les valeurs sont retournées (via echo, code de retour, etc.).
  10. Testez les cas limites - Assurez-vous que les fonctions gèrent correctement les entrées inhabituelles.

En suivant ces pratiques, vous pouvez créer des fonctions Bash plus fiables, maintenables et réutilisables.

Création d'une bibliothèque de fonctions

Pour l'exercice final, créons une bibliothèque de fonctions réutilisable :

touch math_functions.lib

Ajoutez le contenu suivant :

#!/bin/bash
## math_functions.lib - A library of mathematical functions

## Add two numbers
add() {
  echo $(($1 + $2))
}

## Subtract second number from first
subtract() {
  echo $(($1 - $2))
}

## Multiply two numbers
multiply() {
  echo $(($1 * $2))
}

## Divide first number by second (with decimal precision)
divide() {
  if [ "$2" -eq 0 ]; then
    return 1
  fi
  echo "scale=2; $1 / $2" | bc
  return 0
}

## Calculate power: first number raised to second number
power() {
  echo $(($1 ** $2))
}

## Check if a number is even
is_even() {
  if (($1 % 2 == 0)); then
    return 0
  else
    return 1
  fi
}

## Check if a number is odd
is_odd() {
  if is_even "$1"; then
    return 1
  else
    return 0
  fi
}

Maintenant, créons un script qui utilise cette bibliothèque :

touch use_library.sh

Ajoutez le contenu suivant :

#!/bin/bash

## Source the math functions library
source math_functions.lib

## Display a header
echo "Math Functions Demo"
echo "------------------"

## Test the functions
echo "Addition: 5 + 3 = $(add 5 3)"
echo "Subtraction: 10 - 4 = $(subtract 10 4)"
echo "Multiplication: 6 * 7 = $(multiply 6 7)"

## Test division with error handling
div_result=$(divide 20 5)
if [ $? -eq 0 ]; then
  echo "Division: 20 / 5 = $div_result"
else
  echo "Division error: Cannot divide by zero"
fi

## Test division by zero
div_result=$(divide 20 0)
if [ $? -eq 0 ]; then
  echo "Division: 20 / 0 = $div_result"
else
  echo "Division error: Cannot divide by zero"
fi

echo "Power: 2 ^ 8 = $(power 2 8)"

## Test the even/odd functions
echo ""
echo "Number properties:"
for num in 1 2 3 4 5; do
  echo -n "Number $num is "

  if is_even $num; then
    echo "even"
  else
    echo "odd"
  fi
done

Enregistrez, rendez le script exécutable et exécutez-le :

chmod +x use_library.sh
./use_library.sh

Vous devriez voir :

Math Functions Demo
------------------
Addition: 5 + 3 = 8
Subtraction: 10 - 4 = 6
Multiplication: 6 * 7 = 42
Division: 20 / 5 = 4.00
Division error: Cannot divide by zero
Power: 2 ^ 8 = 256

Number properties:
Number 1 is odd
Number 2 is even
Number 3 is odd
Number 4 is even
Number 5 is odd

Cette approche de bibliothèque montre comment vous pouvez créer des collections de fonctions réutilisables qui peuvent être importées dans plusieurs scripts, favorisant ainsi la réutilisation du code et la maintenabilité.

Résumé

Dans ce tutoriel, vous avez appris les concepts essentiels des valeurs de retour des fonctions Bash. En commençant par la création de fonctions de base et la gestion des arguments, vous avez progressé jusqu'à la compréhension des codes de retour et de la manière dont ils indiquent le succès ou l'échec. Vous avez exploré plusieurs méthodes pour retourner des données réelles depuis des fonctions, notamment en utilisant echo, des variables globales et des délimiteurs pour plusieurs valeurs.

À travers des exemples pratiques, vous avez implémenté une utilitaire de gestion de fichiers qui a démontré une bonne composition de fonctions et une gestion d'erreurs appropriée. Enfin, vous avez appris les meilleures pratiques pour créer des fonctions robustes et réutilisables, ainsi que comment les organiser en bibliothèques.

Les compétences acquises dans ce tutoriel fournissent une base solide pour écrire des scripts Bash plus sophistiqués avec une bonne gestion des erreurs, de la modularité et de la réutilisabilité. Ces techniques vous permettent de créer des scripts shell maintenables pour diverses tâches d'automatisation, améliorant ainsi votre productivité globale en tant qu'administrateur système ou développeur.