; comme séparateur de cmd dans un script
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 :
Code:
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 |
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 :
Citation:
Error: invalid clean argument: 'all;'
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 commande
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 :
Code:
1 2 3 4
|
CMD="yum clean all /; yum check_update"
CMD="yum clean all (;) yum check_update"
... |
mais ça ne marche pas !
Une personne bien charitable pourrait-elle m'aider svp ?
D'avance, merci !
Adyr