more tricks
This commit is contained in:
parent
2bb29f37e3
commit
48b66b3034
107
chap/shell.tex
107
chap/shell.tex
@ -74,7 +74,7 @@ tests et les boucles.
|
||||
|
||||
% --------------------------------------------------------------
|
||||
|
||||
\subsection{Le shebang} \index{shebang}
|
||||
\subsection{Le shebang} \index{shebang} \label{shebang}
|
||||
|
||||
Le shebang, c'est ce couple de caractères \texttt{\#!} qui apparait
|
||||
au tout début d'un script shell.
|
||||
@ -99,7 +99,7 @@ l'usage à l'instant, avec la création d'un script complet~:
|
||||
|
||||
\begin{verbatim}
|
||||
tth@redlady:~$ echo '#!/bin/bash' > foo.sh
|
||||
tth@redlady:~$ echo 'printf "%d" 85 >> foo.sh
|
||||
tth@redlady:~$ echo 'printf "%x" 85 >> foo.sh
|
||||
tth@redlady:~$ chmod u+x ./foo.sh
|
||||
tth@redlady:~$ ./foo.sh
|
||||
55
|
||||
@ -145,12 +145,31 @@ Les plus importantes sont là : le choix, la boucle, l'attente.
|
||||
|
||||
\subsection {Les tests}
|
||||
|
||||
Deux éléments sont ils-égaux ?
|
||||
Deux éléments sont ils égaux ? Et d'abord, ces deux éléments
|
||||
sont-ils comparables ?
|
||||
|
||||
% --------------------------------------------------------------
|
||||
|
||||
\subsection {Les boucles}
|
||||
|
||||
Exemple très simple~:
|
||||
|
||||
\begin{verbatim}
|
||||
for foo in A B C D
|
||||
do
|
||||
echo ${foo}
|
||||
done
|
||||
\end{verbatim}
|
||||
|
||||
Autre exemple, un peu moins simple~:
|
||||
|
||||
\begin{verbatim}
|
||||
for foo in $(seq 0 37 133)
|
||||
do
|
||||
printf "foo = %3d\n" ${foo}
|
||||
done
|
||||
\end{verbatim}
|
||||
|
||||
% ==============================================================
|
||||
|
||||
\section{Les fonctions}
|
||||
@ -173,37 +192,48 @@ Et comment les utiliser~:
|
||||
\section{Heredoc}
|
||||
|
||||
Un nom bien difficile à traduire, peut-être par « document en place » ?
|
||||
|
||||
C'est un moyen simple et efficace de mettre des données textuelles
|
||||
dans un script afin de les envoyer dans le \textsl{stdin} d'un
|
||||
logiciel. Par exemple, quelques commandes pour générer un
|
||||
graphique avec Gnuplot\index{gnuplot} sur la console \textsl{dumb}.
|
||||
|
||||
\lstinputlisting{code/shell/heredoc.sh}
|
||||
|
||||
\begin{verbatim}
|
||||
tth@redlady:~/Devel/TetaTricks$ code/shell/heredoc.sh
|
||||
Après le \textsl{shebang}, nous avons la création de la variable
|
||||
pour le titre,
|
||||
et ensuite l'appel à Gnuplot avec la redirection
|
||||
\texttt{$<<$ \_\_EOC\_\_} % bug affichage "<<"
|
||||
qui va envoyer sur le stdin de Gnuplot la suite du
|
||||
script shell (des commandes gnuplot), jusque au marqueur de fin,
|
||||
qui est \texttt{\_\_EOC\_\_} dans notre cas.
|
||||
|
||||
Here Doc
|
||||
|
||||
1 +--------------------------------------------------------------------+
|
||||
| +** *** + + + + |
|
||||
0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-|
|
||||
| ** : : * : : : : |
|
||||
0.6 |-+....**..:..........:....**....:..........:..........:..........:+-|
|
||||
| * : : * : : : : |
|
||||
0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-|
|
||||
| * : : * : : : : |
|
||||
0.2 |-*........:..........:.........**..........:..........:..........:+-|
|
||||
|* : : * : : : |
|
||||
0 |-+........:..........:..........:**........:..........:..........:+-|
|
||||
| : : : * : : : *|
|
||||
-0.2 |-+........:..........:..........:..**......:..........:..........:*-|
|
||||
| : : : * : : * |
|
||||
-0.4 |-+........:..........:..........:.....*....:..........:........**:+-|
|
||||
| : : : * : : * : |
|
||||
-0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-|
|
||||
| : : : *: : ** : |
|
||||
-0.8 |-+........:..........:..........:..........**.........:..**......:+-|
|
||||
| + + + + *** +** + |
|
||||
-1 +--------------------------------------------------------------------+
|
||||
0 1 2 3 4 5 6
|
||||
... et la démonstration~:
|
||||
|
||||
\begin{verbatim}
|
||||
tth@redlady:~/Devel/TetaTricks/code/shell$ ./heredoc.sh
|
||||
|
||||
Here Doc (9946)
|
||||
|
||||
1 +-------------------------------------------------------------+
|
||||
| + + + + + + + + + |
|
||||
| 0.7*sin(x) ******* |
|
||||
| ****** ****** |
|
||||
0.5 |-+ ** ** ** ** +-|
|
||||
| ** * * ** |
|
||||
| ** ** ** ** |
|
||||
| ** ** ** ** |
|
||||
|* ** ** *|
|
||||
0 |-+ * * +-|
|
||||
| ** ** |
|
||||
| * * |
|
||||
| * * |
|
||||
-0.5 |-+ ** ** +-|
|
||||
| *** *** |
|
||||
| ******* |
|
||||
| |
|
||||
| + + + + + + + + + |
|
||||
-1 +-------------------------------------------------------------+
|
||||
0 1 2 3 4 5 6 7 8 9
|
||||
\end{verbatim}
|
||||
|
||||
Je pense que l'exemple est assez parlant.
|
||||
@ -220,6 +250,23 @@ Quelle sont les différences entre \texttt{en\_US.UTF-8} et
|
||||
\texttt{C.UTF-8} ?
|
||||
|
||||
% ==============================================================
|
||||
% https://wiki.fiat-tux.fr/books/d%C3%A9veloppement/page/ajouter-des-couleurs-a-ses-scripts-shell
|
||||
|
||||
\section{Écrire en couleur} \index{ANSI} \index{escape}
|
||||
|
||||
\begin{verbatim}
|
||||
BLACK='\033[0;30m'
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
BLUE='\033[0;34m'
|
||||
PURPLE='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
WHITE='\033[0;37m'
|
||||
\end{verbatim}
|
||||
|
||||
% ==============================================================
|
||||
|
||||
\section{Questions à voir}
|
||||
|
||||
\begin{itemize}
|
||||
|
Loading…
Reference in New Issue
Block a user