Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 15:30] Hypathie [D ) enchaînements de commandes dans les scripts] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 16:10] Hypathie [C ) Création de variables] |
||
---|---|---|---|
Ligne 269: | Ligne 269: | ||
</code> | </code> | ||
+ | <note tip> | ||
+ | À savoir : une suite de commandes s'écrit de façon équivalente pour le shell ainsi : | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | set -o posix | ||
+ | printf "Un nouveau script $USER ? Son nom : " | ||
+ | { read nom ;\ | ||
+ | echo "#!/bin/bash" >> $nom ;\ | ||
+ | chmod u+x $nom ;\ | ||
+ | mv ~/$nom ~/MesScripts ;\ | ||
+ | /usr/bin/gedit ~/MesScripts/$nom ;} | ||
+ | </code> | ||
+ | (espace avant le ; puis anti-slash accolé au point virgule ; retour à la ligne (espace ou non avant la nouvelle commande.) | ||
+ | |||
+ | **Merci à captnfab et LeDub pour cette information !** | ||
+ | </note> | ||
* **Pour le lancer :** | * **Pour le lancer :** | ||
Ligne 281: | Ligne 297: | ||
**Lors de l'exécution de ce script, la chaîne que vous entrerez pour répondre à la question, sera le nom d'un nouveau script que vous voulez créer.** | **Lors de l'exécution de ce script, la chaîne que vous entrerez pour répondre à la question, sera le nom d'un nouveau script que vous voulez créer.** | ||
- | =====C ) Création de variables ===== | + | ===== Création de variables ===== |
En liens nécessaires : \\ | En liens nécessaires : \\ | ||
[[doc:programmation:shell:shell#variables-et-environnement|Le shell pour tous : "Variables et environnement"]]\\ | [[doc:programmation:shell:shell#variables-et-environnement|Le shell pour tous : "Variables et environnement"]]\\ | ||
Ligne 360: | Ligne 376: | ||
* **Voir "l'exemple 4.3. Affectation de variable, basique et plus élaborée" du : [[http://abs.traduc.org/abs-fr/ch04s02.html|Guide avancé d'écriture des scripts Bash : "4.2. Affectation d'une variable"]]** | * **Voir "l'exemple 4.3. Affectation de variable, basique et plus élaborée" du : [[http://abs.traduc.org/abs-fr/ch04s02.html|Guide avancé d'écriture des scripts Bash : "4.2. Affectation d'une variable"]]** | ||
* ** Voir "Variable nulle et variable non-déclarée dans l'exemple "4.4. Entier ou chaîne de caractères ?" du : [[http://abs.traduc.org/abs-fr/ch04s03.html|Guide avancé d'écriture des scripts Bash : "4.3. Les variables Bash ne sont pas typées"]]** | * ** Voir "Variable nulle et variable non-déclarée dans l'exemple "4.4. Entier ou chaîne de caractères ?" du : [[http://abs.traduc.org/abs-fr/ch04s03.html|Guide avancé d'écriture des scripts Bash : "4.3. Les variables Bash ne sont pas typées"]]** | ||
+ | |||
+ | <note tip> | ||
+ | Pour concaténer les valeurs deux variables : | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var1=lala | ||
+ | var2=li | ||
+ | var3=$var1$var2 | ||
+ | echo $var3 | ||
+ | </code> | ||
+ | </note> | ||
====2) Affectation par la lecture : read ==== | ====2) Affectation par la lecture : read ==== | ||
Ligne 527: | Ligne 554: | ||
====1) opérateurs de sortie : ==== | ====1) opérateurs de sortie : ==== | ||
<code bash> | <code bash> | ||
- | > : crée un fichier ou le réactualise ; redirige le canal choisi vers un fichier et force sa création, si le fichier existe son contenu est recrée et numéro d'inode du fichier d'origine est conservé. | + | > : crée un fichier ou le réactualise ; redirige le canal choisi vers un fichier et force sa création, |
+ | si le fichier existe son contenu est recrée et numéro d'inode du fichier d'origine est conservé. | ||
</code> | </code> | ||
<code bash> | <code bash> | ||
Ligne 632: | Ligne 660: | ||
<< Redirige en entrée une série de données. | << Redirige en entrée une série de données. | ||
</code> | </code> | ||
- | On nomme cette redirection "label". Redirection utilisée dans un document en ligne dont on se sert que pour certaines commandes, comme ftp ou cat.\\ Voir : [[http://abs.traduc.org/abs-5.0-fr/ch18.html#heredocref]]\\ | + | On nomme cette redirection "label".\\ Redirection utilisée dans un document en ligne dont on se sert que pour certaines commandes, comme ftp ou cat.\\ Voir : [[http://abs.traduc.org/abs-5.0-fr/ch18.html#heredocref]]\\ |
Ne pas confondre avec la commande e2label, voir : [[doc:systeme:e2label]] | Ne pas confondre avec la commande e2label, voir : [[doc:systeme:e2label]] | ||
Ligne 638: | Ligne 666: | ||
Écrire un script qui crée le dossier "ABCD" et 4 fichiers vides (nommés a b c d) ; | Écrire un script qui crée le dossier "ABCD" et 4 fichiers vides (nommés a b c d) ; | ||
qui liste le contenu de "ABCD" et qui inscrit le résultat dans un fichier nommé "ls1" qui sera placé dans "ABCD" ; | qui liste le contenu de "ABCD" et qui inscrit le résultat dans un fichier nommé "ls1" qui sera placé dans "ABCD" ; | ||
- | qui depuis le répertoire personnel crée le fichier vide nommé "fichier.txt", liste à nouveau ABCD, inscrit le résultat dans le fichier "ls2", rangé dans "ABCD"; | + | qui depuis le répertoire personnel crée le fichier vide nommé "fichier.txt",\\ liste à nouveau ABCD, inscrit le résultat dans le fichier "ls2", rangé dans "ABCD"; |
qui permet d'inscrire depuis le terminal une ligne de texte dans le fichier nommé "fichier.txt" ; | qui permet d'inscrire depuis le terminal une ligne de texte dans le fichier nommé "fichier.txt" ; | ||
- | puis une deuxième ligne de texte dans "fichier.txt", en affichant dans le terminal, le nombre de lignes, de mots et d'octets que possède le fichier "fichier.txt" ; | + | puis une deuxième ligne de texte dans "fichier.txt", en affichant dans le terminal,\\ le nombre de lignes, de mots et d'octets que possède le fichier "fichier.txt" ; |
- | qui se sert de différentes méthodes tout au long du script pour vérifier au niveau du terminal que chaque commande s'est bien déroulée. | + | se servir de différentes méthodes tout au long du script pour vérifier\\ au niveau du terminal que chaque commande s'est bien déroulée. |
Ligne 648: | Ligne 676: | ||
#!/bin/bash | #!/bin/bash | ||
set -o posix | set -o posix | ||
- | { mkdir ~/ABCD 2>>/dev/null ; echo $? ; cd ABCD && touch a b c d ; echo $? ; ls -l >> ~/ABCD/ls1 ; echo $? ; cd ~ ; pwd ; touch ~/ABCD/fichier.txt ; echo $? ; pwd && ls -l ~/ABCD >> ~/ABCD/ls2 ; echo $? ; read phrase1 && echo ${phrase1} >> ~/ABCD/fichier.txt && echo $? ; read phrase2 ; cat >> ~/ABCD/fichier.txt << EOF | + | { mkdir ~/ABCD 2>>/dev/null ;\ |
+ | echo $? ;\ | ||
+ | cd ABCD && touch a b c d ;\ | ||
+ | echo $? ;\ | ||
+ | ls -l >> ~/ABCD/ls1 ;\ | ||
+ | echo $? ;\ | ||
+ | cd ~ ;\ | ||
+ | pwd ;\ | ||
+ | touch ~/ABCD/fichier.txt ;\ | ||
+ | echo $? ;\ | ||
+ | pwd && ls -l ~/ABCD >> ~/ABCD/ls2 ;\ | ||
+ | echo $? ;\ | ||
+ | read phrase1 && echo ${phrase1} >> ~/ABCD/fichier.txt && echo $? ;\ | ||
+ | read phrase2 ;\ | ||
+ | cat >> ~/ABCD/fichier.txt << EOF | ||
$phrase2 | $phrase2 | ||
EOF | EOF |