Aidez-moi à écrire une programmation Shell en utilisant if
else
, tout le code possible en utilisant [[ ]]
, [ ]
, (( ))
.
J'ai essayé mais cela ne fonctionne pas (vous pouvez vérifier ma question précédente Opérateurs binaires arithmétiques -gt, -lt donne une erreur mais fonctionne dans un script Shell ).
Voici la version C:
int i = 10, n = 20;
if (i < n)
printf("i smaller");
else if (i > n)
printf("n smaller");
else
printf("same");
Qu'en est-il de
#!/bin/sh
i=1
n=2
if [ "$i" -gt "$n" ]; then
echo "i is bigger"
Elif [ "$n" -gt "$i" ]; then
echo "n is bigger"
else
echo "same"
fi
seconde...
#!/bin/bash
i=1
n=2
if ((i > n)) ; then
echo "i is bigger"
Elif ((i < n)); then
echo "n is bigger"
else
echo "same"
fi
et le dernier ...
#!/bin/bash
i=1
n=2
if [[ $i -gt $n ]]; then
echo "i is bigger"
Elif [[ $i -lt $n ]]; then
echo "n is bigger"
else
echo "same"
fi
J'ai le script suivant pour m'assurer que certains services restent actifs. Il effectue également une sauvegarde mysql tous les jours, vérifie les services en ligne et, si ce n’est pas le cas, ils remontent, etc. Ce n’est pas mon meilleur travail, mais vous donne une idée de la façon d’utiliser IF, et il en va de même pour ELSE IF:
#!/bin/bash
function checker() {
PID1=$(pidof authserver)
PID2=$(pidof worldserver)
PID3=$(date +%k%M)
PID4=$(date +%d_%m_%y)
Destiny=/root/bck
if [ -z "$PID1" ]; then
echo 3 > /proc/sys/vm/drop_caches
screen -A -m -d -S auth ./bin/authserver
fi
if [ -z "$PID2" ]; then
echo 3 > /proc/sys/vm/drop_caches
screen -A -m -d -t titan -S world ./bin/worldserver
fi
if [ "$PID3" -eq 230 ]; then
screen -S world -p titan -X stuff $'anno SERVIDOR CERRADO DENTRO DE 10 MINUTOS POR UNA DURACION DE 30 SEGUNDOS PARA OPTIMIZACIONES\n'
sleep 300
screen -S world -p titan -X stuff $'anno SERVIDOR CERRADO DENTRO DE 5 MINUTOS POR UNA DURACION DE 30 SEGUNDOS PARA OPTIMIZACIONES\n'
sleep 180
screen -S world -p titan -X stuff $'anno SERVIDOR CERRADO DENTRO DE 2 MINUTOS POR UNA DURACION DE 30 SEGUNDOS PARA OPTIMIZACIONES\n'
screen -S world -p titan -X stuff $'ser shut 120\n'
sleep 120
/etc/init.d/Apache restart
sleep 5
mysqldump -uroot -px chart > $Destiny/c$PID4.sql
mysqldump -uroot -px auth > $Destiny/a$PID4.sql
/etc/init.d/mysql restart
sleep 5
killall -9 worldserver
killall -9 authserver
echo 3 > /proc/sys/vm/drop_caches
fi
return 1
}
while :
do
checker
sleep 5
done
Comme je le disais, pas le meilleur mais fait le travail.