OVH Cloud OVH Cloud

Manuel simple pour apprendre les scripts bash

16 réponses
Avatar
Richard Lemay
Bonjour à tous,

J'aimerais savoir si quelqu'un peut me conseiller un manuel qui pourrait
m'expliquer comment construire des scripts bash simples. C'est que les
pages de manuel (man bash, man sh) sont un peu obscures quand on commence.

Je cherche à construire un script simple qui execute une commande si
aucun paramètre n'est donné après la commande et une autre si un
paramètre est donné.

Ainsi, par exemple:
si je tappe
> go.acrobat-reader
il execute /home/apps/acrobat-reader/bin/acroread
et si je tappe
> go.acrobat-reader "/go/temp/document amusant.pdf"
il execute /home/apps/acrobat-reader/bin/acroread \
"/go/temp/document amusant.pdf"

Je sais qu'en DOS/Windows, on peut utiliser une commande du style:
> if %1 "" <commande>
> if %1 NOT "" <commande>

En bash, il semble qu'on ne procède pas ainsi. Il semble vouloir
exécuter $1, ce qui n'est évidemment pas ce que je cherche. J'en
conclus, de manière justifiée, que je ne comprend rien à la
programmation de scripts bash et que je dois apprendre :).

C'est pourquoi j'aimerais faire un peu de lecture pour me documenter sur
le sujet. Y aurait-il quelqu'un pour me conseiller un document
d'introduction à cette véritable magie noire? :)

Merci,
Richard


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2
Avatar
Antoine Bobin
Richard Lemay a écrit :

Bonjour à tous,

J'aimerais savoir si quelqu'un peut me conseiller un manuel qui
pourrait m'expliquer comment construire des scripts bash simples.
C'est que les pages de manuel (man bash, man sh) sont un peu obscures
quand on commence.

[...]



Merci,
Richard




Es-tu aller voir sur Léa : http://lea-linux.org/dev/
La partie "Une introduction aux scripts du shell" devrait être une bon
commencement.

Antoine


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Charles Plessy
On Wed, Jun 15, 2005 at 12:27:49AM -0400, Richard Lemay wrote :
Bonjour à tous,



Bonjour,

Ainsi, par exemple:
si je tappe
> go.acrobat-reader
il execute /home/apps/acrobat-reader/bin/acroread
et si je tappe
> go.acrobat-reader "/go/temp/document amusant.pdf"
il execute /home/apps/acrobat-reader/bin/acroread
"/go/temp/document amusant.pdf"




Ça n'est pas plutôt un alias que tu veux dans ce cas ?

GSLC8|vc|$ alias go.acrobat-reader=/home/apps/acrobat-reader/bin/acroread
GSLC8|vc|$ alias
alias go.acrobat-reader='/home/apps/acrobat-reader/bin/acroread'
GSLC8|vc|$ go.acrobat-reader toto
-bash: /home/apps/acrobat-reader/bin/acroread: No such file or directory

bien sûr, dans mon cas, acroread n'est pas installé...

--
Charles


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Steve
salut,




Es-tu aller voir sur Léa : http://lea-linux.org/dev/
La partie "Une introduction aux scripts du shell" devrait être une bon
commencement.




et continuer par http://abs.traduc.org/abs-3.0-fr/

Antoine




steve




Avatar
marc chantreux
Richard Lemay wrote:

Les liens vers les bons tutos sont deja passés, je rajoute simplement le
lien vers une bonne liste de diffusion :

http://debianworld.org/?q=node/12

peu de trafic, peu de bruit, d'excellentes réponses.

Ainsi, par exemple:
si je tappe
> go.acrobat-reader
il execute /home/apps/acrobat-reader/bin/acroread
et si je tappe
> go.acrobat-reader "/go/temp/document amusant.pdf"
il execute /home/apps/acrobat-reader/bin/acroread
"/go/temp/document amusant.pdf"



help alias

En bash, il semble qu'on ne procède pas ainsi. Il semble vouloir
exécuter $1, ce qui n'est évidemment pas ce que je cherche. J'en
conclus, de manière justifiée, que je ne comprend rien à la
programmation de scripts bash et que je dois apprendre :).



echo $0 , pour voir :)

la suite sur ?

cordialement,
mc


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Richard Lemay
Charles Plessy a écrit :
On Wed, Jun 15, 2005 at 12:27:49AM -0400, Richard Lemay wrote :

Bonjour à tous,




Bonjour,


Ainsi, par exemple:
si je tappe

go.acrobat-reader



il execute /home/apps/acrobat-reader/bin/acroread
et si je tappe

go.acrobat-reader "/go/temp/document amusant.pdf"



il execute /home/apps/acrobat-reader/bin/acroread
"/go/temp/document amusant.pdf"





Ça n'est pas plutôt un alias que tu veux dans ce cas ?

GSLC8|vc|$ alias go.acrobat-reader=/home/apps/acrobat-reader/bin/acroread
GSLC8|vc|$ alias
alias go.acrobat-reader='/home/apps/acrobat-reader/bin/acroread'
GSLC8|vc|$ go.acrobat-reader toto
-bash: /home/apps/acrobat-reader/bin/acroread: No such file or directory

bien sûr, dans mon cas, acroread n'est pas installé...




Non parce que, dans plusieurs cas, j'exécute des commandes avant le
programme. Les petits scripts me permettent d'éviter de réécrire mon
menu à chaque fois et d'exécuter certaines commandes. Ainsi, par
exemple, je peux créer un backup de mes fichier korganizer avant
d'exécuter le programme. C'est pratique.

Je voulais ajouter la possibilité d'utiliser ces commandes pour les
associations de fichier. Ainsi, cliquer sur un fichier PDF utiliserait
mon script go.acrobat-reader. Le problème, c'est que si le fichier
contient un espace, ça ne fonctionne plus. En effet, il execute
'acroread fichier espace.pdf' ce qui cause une erreur. Si je mets des
guillemets autour de $1, ça fonctionne, mais je ne peux plus exécuter
acrobat reader sans paramètres (il essaie d'exécuter 'acroread ""')...

C'est pourquoi je dois vérifier si $1 est différent de "" ou non et
exécuter une commande dans chaque cas. Je crois que la documentation sur
léa linux devrait m'aider à comprendre comment faire.

Merci à tous,
Richard



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric BOITEUX
Le Wed, 15 Jun 2005 09:01:54 -0400, Richard Lemay a écrit :

Je voulais ajouter la possibilité d'utiliser ces commandes pour les
associations de fichier. Ainsi, cliquer sur un fichier PDF utiliserait
mon script go.acrobat-reader. Le problème, c'est que si le fichier
contient un espace, ça ne fonctionne plus. En effet, il execute
'acroread fichier espace.pdf' ce qui cause une erreur. Si je mets des
guillemets autour de $1, ça fonctionne, mais je ne peux plus exécuter
acrobat reader sans paramètres (il essaie d'exécuter 'acroread ""')...



Salut,

Essaie donc pour voir : acroread ${1+"$@"}


Fred.
Avatar
Richard Lemay
Frédéric BOITEUX a écrit :
Le Wed, 15 Jun 2005 09:01:54 -0400, Richard Lemay a écrit :


Je voulais ajouter la possibilité d'utiliser ces commandes pour les
associations de fichier. Ainsi, cliquer sur un fichier PDF utiliserait
mon script go.acrobat-reader. Le problème, c'est que si le fichier
contient un espace, ça ne fonctionne plus. En effet, il execute
'acroread fichier espace.pdf' ce qui cause une erreur. Si je mets des
guillemets autour de $1, ça fonctionne, mais je ne peux plus exécuter
acrobat reader sans paramètres (il essaie d'exécuter 'acroread ""')...




Salut,

Essaie donc pour voir : acroread ${1+"$@"}


Fred.





J'ai fais un peu de lecture et j'ai construit le script suivant qui
fonctionne bien:


#!/bin/sh
case "$1" in

"") /home/apps/acrobat-reader/bin/acroread
;;

*) /home/apps/acrobat-reader/bin/acroread "$1"
;;

esac


Sauf que cette commande (acroread ${1+"$@"} m'intrigue. Elle semble
faire exactement ce que je veux en une ligne. Je vais devoir trouver de
la documentation pour me l'expliquer :).


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
tnemeth
Selon Richard Lemay :

| /home/apps/acrobat-reader/bin/acroread

Erk...
Bonjour le respect du FHS :(


Thomas.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric BOITEUX
Le Wed, 15 Jun 2005 09:34:16 -0400, Richard Lemay a écrit :

J'ai fais un peu de lecture et j'ai construit le script suivant qui
fonctionne bien:


#!/bin/sh
case "$1" in

"") /home/apps/acrobat-reader/bin/acroread
;;

*) /home/apps/acrobat-reader/bin/acroread "$1"
;;

esac



Oui, mais si tu as plusieurs fichiers en arguments ?

Sauf que cette commande (acroread ${1+"$@"} m'intrigue. Elle semble
faire exactement ce que je veux en une ligne. Je vais devoir trouver de
la documentation pour me l'expliquer :).



Elle fait je crois exactement ce que tu veux, mais c'est assez illisible. C 'est
une formule "connue" que j'avais pêché dans un script, et que je garde
sous le coude. Mais je n'en ai pas vu d'explication dans la page manuel de 'bash'...

Fred.
Avatar
Richard Lemay
a écrit :
Selon Richard Lemay :

| /home/apps/acrobat-reader/bin/acroread

Erk...
Bonjour le respect du FHS :(


Thomas.





Héhéhé
Je sais... mais j'utilise la partition home pour faire les
configurations utilisateur. Je respecte les standards pour les
programmes compilés (/opt, /usr/local), mais j'ai une structure
particulière pour ce qui est de mes configurations personnelles... :)

Richard


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2