Quiz : Maîtrise de Bash et du Shell
Vous parlez aux ordinateurs ? Enfin, comment ?
Mettez vos compétences en script Bash à l’épreuve avec ces 16 questions !
Couvrant les variables, les boucles, les conditions, la manipulation de chaînes, les fonctions et les pièges syntaxiques du simple au complexe.
Affûtez (ou prouvez) vos compétences en scripting shell !
Comment les variables sont‑elles définies dans Bash ?
Les variables dans Bash sont déclarées sans espaces autour du signe =. Par exemple :
name=AliceCette assignation donne la valeur "Alice" à la variable name.
Note : $name est utilisé pour référencer ou lire la valeur d’une variable.
Ajouter des espaces fait que le shell interprète la commande comme un programme à exécuter, ce qui n’est pas souhaité lors de l’affectation d’une variable.
De plus, Bash est sensible à la casse, donc name, NAME et Name sont des variables différentes.
Enfin, les noms de variables ne peuvent pas contenir d’espaces ni de tirets (-). Utilisez des underscores (_) ou le camelCase à la place.
Quel affichera It's 🔨 Time! ?
Je sais. C’est fou à quel point l’échappement rend les chaînes difficiles à analyser. Imaginez devoir échapper d’autres langages dans des chaînes Bash – avec tous ces guillemets, apostrophes et symboles $ qui vous font chier. 🫠
Une apostrophe ne peut pas apparaître dans une chaîne Bash entre apostrophes, même précédée d’un antislash. Fermez le segment cité, écrivez une apostrophe échappée à l’extérieur, puis rouvrez le segment cité. La séquence fermeture‑guillemet, guillemet‑échappé, réouverture ('\'') permet d’afficher :
It's 🔨 Time!Il existe d’autres façons de faire, mais c’est la plus courante.
Alors, que va-t-il afficher ?
price="$100"echo "Cost: $price"Les variables numérotées ont une signification spéciale. Dans ce cas, $1 est une variable spéciale qui contient le premier argument passé au script ou à la fonction.
Comme nous exécutons le script dans un REPL, il n’y a aucun argument, donc $1 est vide. Le texte restant 00 est affiché tel quel.
Pour afficher un caractère $ littéral, utilisez des guillemets simples ou échappez‑le avec un antislash (\\) :
price="\$100"echo "Cost: $price"Comment obtenir la longueur d’une variable en Bash ?
La syntaxe ${#username} renvoie la longueur de username.
Par exemple :
username="@justsml"echo ${#username} # => 8Bien que wc fonctionnerait, ce n’est techniquement pas une partie de Bash.
L’utilitaire wc est une vieille blague interne faisant référence à “water closet”, ou toilettes.
PLAISANTERIE ! Quelqu’un lit encore ça ?
En réalité, wc est une commande ancienne du POSIX (et des jours Unix d’AT&T). Son nom signifie “word count” et il peut compter les lignes, les mots et les caractères dans un fichier ou un flux d’entrée.
Quelle sera la sortie de ce script ?
function greet () { echo "$1"}greet Hi DanLes fonctions Bash peuvent accepter des arguments. La variable $1 contient le premier argument passé à la fonction.
Rappelez‑vous, $0 est le nom du script, $1 le premier argument, $2 le deuxième, etc. Les espaces séparent les arguments. Ainsi, greet Hi Dan passe "Hi" comme premier argument. Pour passer "Hi Dan" comme un seul argument, il faut le citer : greet "Hi Dan".
Comment les mathématiques fonctionnent-elles dans Bash ?
La syntaxe (( )) effectue des calculs entiers dans Bash.
Elle peut être utilisée pour des calculs simples :
((result = 2 + 2))echo $result # => 4Ou pour des expressions conditionnelles :
if (( 2 > 1 )); then echo "2 is greater than 1"fiPour l’arithmétique à virgule flottante, envisagez d’utiliser bc ou awk.
Lequel de ces choix multiplie correctement 10 et 0,5 et affiche 5 ?
La syntaxe (( )) effectue UNIQUEMENT des opérations arithmétiques entières. Vous savez, des nombres entiers, sans virgule flottante !
Bash (peut-être étonnamment) ne possède pas de support intégré pour l’arithmétique à virgule flottante.
La solution la plus courante consiste à utiliser les utilitaires GNU bc ou awk.
Que fait le : dans ce script ?
rosie="Bad cat, good cat"echo ${rosie:9}La syntaxe ${var:offset} extrait une sous‑chaîne à partir de offset. Ici, la sortie est :
good catPour extraire une sous‑chaîne d’une longueur spécifique, utilisez ${var:offset:length}.
Pour extraire depuis la fin de la chaîne, utilisez ${var: -offset}. (Notez l’espace avant le - !)
Mon quiz Bash vous a-t-il laissé en miettes ?
Faites-le moi savoir dans les commentaires ci‑dessous !
Lectures complémentaires
Rafraîchissez vos compétences Bash avec les ressources suivantes :
- Bash Guide
- BashFAQ
- ShellCheck
- Bash Academy
- Bash Scripting Tutorial
- Bash Reference Manual
- Bash Hackers Wiki
- Bash Guide for Beginners
- Bash Reference Card
