Bonjour,
Je suis débutant en bash script et j'ai un p'tit pb pour utiliser le caractère ; comme séparateur de commande sur une même ligne dans un script sh.
Ci-dessous mon script :
Je m'explique ... quand je tape la commande yum clean all; yum check-update directement sous mon prompt ça fonctionne mais quand je l'utilise dans le script ci-dessus j'ai le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #!/bin/sh MAIL="xxx@yyy.com" function check_distrib() { if [ -f '/etc/debian_version' ] then echo "debian" return fi if [ -f '/etc/redhat-release' ] then echo "redhat" return fi } function debian_update() { UPDT="/tmp/debian_update" CMD="apt-get clean all;apt-get clean;apt-get update;apt-get upgrade -s" $CMD >& $UPDT cat $UPDT | mail -s "Result Security Update for ${HOSTNAME} " $MAIL } function redhat_update(){ UPDT="/tmp/redhat_update" CMD="yum clean all; yum check_update" $CMD >& $UPDT cat $UPDT | mail -s "Result Security Update for ${HOSTNAME} " $MAIL } DISTRIB=`check_distrib` case $DISTRIB in 'debian') debian_update ;; 'redhat') redhat_update ;; esac
Visiblement il interprète le caractère spécial point virgule ; comme ne faisant pas parti d'un argument valide à donner à la commande yum clean. Normal vous me direz mais moi je veux juste utiliser le ; comme séparateur de commandeError: invalid clean argument: 'all;'
J'ai bien essayé de modifier la ligne de plusieurs manières pour que le système ne cherche pas à associer ce fameux ; à la commande yum, genre :
mais ça ne marche pas !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CMD="yum clean all /; yum check_update" CMD="yum clean all (;) yum check_update" ...
Une personne bien charitable pourrait-elle m'aider svp ?
D'avance, merci !
Adyr
Partager