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édentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:script_shell [Le 17/11/2019, 10:09]
196.227.136.160 [Méthode graphique]
tutoriel:script_shell [Le 23/11/2020, 21:55] (Version actuelle)
bcag2 ajout l'option 'bash' au balise <code>
Ligne 5: Ligne 5:
  
 Un script shell permet d'​automatiser une série d'​opérations. Il se présente sous la forme d'un fichier contenant une ou plusieurs commandes qui  seront exécutées de manière séquentielle. ​ Un script shell permet d'​automatiser une série d'​opérations. Il se présente sous la forme d'un fichier contenant une ou plusieurs commandes qui  seront exécutées de manière séquentielle. ​
-<​code>​+<​code ​bash>
 #!/bin/bash #!/bin/bash
 # This script will take an animated GIF and delete every other frame # This script will take an animated GIF and delete every other frame
Ligne 32: Ligne 32:
 =====Pour faire qu'un script soit exécutable ===== =====Pour faire qu'un script soit exécutable =====
  
-H==== Méthode graphique ====+==== Méthode graphique ====
  
 Votre script est un simple fichier texte, par défaut il s'​ouvre donc avec l'​éditeur de texte défini par défaut (ex : [[:​gedit|Gedit]] dans une session Unity ou Gnome).\\ Votre script est un simple fichier texte, par défaut il s'​ouvre donc avec l'​éditeur de texte défini par défaut (ex : [[:​gedit|Gedit]] dans une session Unity ou Gnome).\\
Ligne 52: Ligne 52:
 ==== Méthode dans un terminal ==== ==== Méthode dans un terminal ====
  
-Il suffit de se placer dans le dossier où est le script, et de lancer : <​code>​bash nom_du_script</​code>​+Il suffit de se placer dans le dossier où est le script, et de lancer : <​code ​bash>bash nom_du_script</​code>​
 mais pas toujours bash ( dépend du langage du script ) mais pas toujours bash ( dépend du langage du script )
  
-ou si vous voulez l'​exécuter par son  nom , il faut le rendre exécutable avec ''​chmod''​. Pour ceci tapez la commande qui suit : <​code>​chmod +x nom_du_script</​code>​+ou si vous voulez l'​exécuter par son  nom , il faut le rendre exécutable avec ''​chmod''​. Pour ceci tapez la commande qui suit : <​code ​bash>chmod +x nom_du_script</​code>​
  
-Puis vous pouvez exécuter le script en faisant : <​code>​./​nom_du_script</​code>​+Puis vous pouvez exécuter le script en faisant : <​code ​bash>​./​nom_du_script</​code>​
 mais pourquoi le ./ ? mais pourquoi le ./ ?
 === Le chemin ./ === === Le chemin ./ ===
Ligne 93: Ligne 93:
  
   * [[wpfr>​Debian_Almquist_shell|dash]] (//Debian Almquist shell//) : shell plus léger que bash, installé par défaut sur Ubuntu ;   * [[wpfr>​Debian_Almquist_shell|dash]] (//Debian Almquist shell//) : shell plus léger que bash, installé par défaut sur Ubuntu ;
-  * bash (//Bourne Again SHell//) : conçu par le projet GNU, shell linux ; le shell par défaut sur Ubuntu ;+  * [[:bash]] (//Bourne Again SHell//) : conçu par le projet GNU, shell linux ; le shell par défaut sur Ubuntu ;
   * rbash : un shell restreint basé sur bash. Il existe de nombreuses variantes de bash ;   * rbash : un shell restreint basé sur bash. Il existe de nombreuses variantes de bash ;
   * csh, tcsh : shells C, créés par Bill Joy de Berkeley ;   * csh, tcsh : shells C, créés par Bill Joy de Berkeley ;
Ligne 115: Ligne 115:
 Attention: pas d'​espace ni avant ni après le signe "​="​ .\\ Attention: pas d'​espace ni avant ni après le signe "​="​ .\\
 Autre exemple avec une commande avec arguments : Autre exemple avec une commande avec arguments :
-<​code>​nbre_lignes=$(wc -l < fichier.ext)</​code>​+<​code ​bash>​nbre_lignes=$(wc -l < fichier.ext)</​code>​
 //​nbre_lignes//​ contiendra le nombre de lignes contenu dans //​fichier.ext//​ . //​nbre_lignes//​ contiendra le nombre de lignes contenu dans //​fichier.ext//​ .
  
Ligne 130: Ligne 130:
  
 Et avec des chemins de répertoires : Et avec des chemins de répertoires :
-<​code>​+<​code ​bash>
 chemin_de_base="/​home/​username/​un repertoire avec espaces"​ chemin_de_base="/​home/​username/​un repertoire avec espaces"​
 chemin_complet="​$chemin_de_base/​repertoire"​ chemin_complet="​$chemin_de_base/​repertoire"​
 </​code>​ </​code>​
-<note important>​Comme on le voit ci-dessus si on met une chaîne de caractères avec des espaces entre guillemets, la variable la prend bien mais attention à l'​utiliser aussi avec des guillemets… <​code>​rsync -av "​$chemin_complet"​ …</​code>​sinon les espaces reprennent leurs rôles de séparateur!</​note>​+<note important>​Comme on le voit ci-dessus si on met une chaîne de caractères avec des espaces entre guillemets, la variable la prend bien mais attention à l'​utiliser aussi avec des guillemets… <​code ​bash>rsync -av "​$chemin_complet"​ …</​code>​sinon les espaces reprennent leurs rôles de séparateur!</​note>​
 Des variables système permettent d'​accélérer la saisie et la compréhension. Des variables système permettent d'​accélérer la saisie et la compréhension.
 Pour voir les variables d'​environnement de votre système tapez simplement : Pour voir les variables d'​environnement de votre système tapez simplement :
Ligne 260: Ligne 260:
 </​code>​ </​code>​
  
 +==== L'​arithmétique ====
 +<code bash>(( variable = 2 + $autre_var * 5 ))</​code>​
 +Exemple: besoin de définir des plages de valeurs (1 à 500 puis 501 à 1000 puis 1001 à 1500…)
 +<code bash>
 +id_per_step = 500
 +for (( i=0; i<8; i++ )); do
 + (( min_step_id = 1 + $i * $id_per_step ))
 + (( max_step_id = (( $i + 1 )) * $id_per_step ))
 + echo "​$min_step_id to $max_step_id "
 +done
 +</​code>​
 ===== Vocabulaire ===== ===== Vocabulaire =====
 ==== La commande test ==== ==== La commande test ====
Ligne 607: Ligne 618:
 ==== La structure for ==== ==== La structure for ====
  
-L'​instruction `for` exécute ce qui est dans son bloc un nombre de fois prédéfini. Sa syntaxe est la suivante :+L'​instruction `for` exécute ce qui est dans son bloc un nombre de fois prédéfini. Sa syntaxe est la suivante ​:
 <code bash> <code bash>
 for variable in valeurs; do for variable in valeurs; do
     instructions     instructions
 +done
 +</​code>​
 +
 +ou le classique:
 +<code bash>
 +for (( i=$min; i<=$max; i++ )); do
 +    instructions_avec_i # ou pas
 done done
 </​code>​ </​code>​
Ligne 723: Ligne 741:
 </​code>​ </​code>​
 puis : puis :
-<​code>​+<​code ​bash>
 $ ./​favoritefood $ ./​favoritefood
 Vous aimez les moules frites ! Vous aimez les moules frites !
Ligne 744: Ligne 762:
 </​code>​ </​code>​
 puis : puis :
-<​code>​+<​code ​bash>
 $ ./​truncbegin "Hello world !" 5 $ ./​truncbegin "Hello world !" 5
 world ! world !
Ligne 882: Ligne 900:
 ---- ----
 //​Contributeurs:​ [[:​utilisateurs:​Gapz]],​ [[:​utilisateurs:​Gloubiboulga]] ,​[[:​utilisateurs:​sparky]] et [[:​utilisateurs:​deax_one]]//​ //​Contributeurs:​ [[:​utilisateurs:​Gapz]],​ [[:​utilisateurs:​Gloubiboulga]] ,​[[:​utilisateurs:​sparky]] et [[:​utilisateurs:​deax_one]]//​
 +
  • tutoriel/script_shell.1573981783.txt.gz
  • Dernière modification: Le 17/11/2019, 10:09
  • par 196.227.136.160