Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/07/2008, à 00:33

Soulou

[Résolu] Apprentissage du shell

Voilà récemment je me suis dit que ce serait chouette de pouvoir écrire des petits scripts shell, histoire de me simplifier les choses, c'est bien de prendre chez les autres, mais faire soit-même, c'est mieux.
Donc pour commencer mon apprentissage, je me dis qu'un petit script utilisant zenity permettant un "petit" (pour le moment) nettoyage du système serait cool.
Mais voilà je bloque à un moment, je suis incapale de lui faire comprendre une condition, dans une condition, regardez :

#!/bin/bash

Op1="Vider la corbeille"
Op2="Supprimer les paquets inutiles"
Op3="Supprimer les paquets archivés"

Cond=$(zenity --list --title="Nettoyage système" --text="Cochez les options que vous souhaitez réaliser, elles ne nuiront en aucun cas à votre ordinateur" --checklist \
--column="A réaliser" --column="Tâche" \
FALSE "$Op1" \
FALSE "$Op2" \
FALSE "$Op3")

if [ "$Cond" = "$Op1" ]; then
	zenity --question --title="Confirmation" --text="Voulez-vous vraiment Vider la corbeille ?"
		while [ "$?"="0" ]; do echo "ok" done
	
elif [ "$Cond" = "$Op2" ]; then
	zenity --question --title="Confirmation" --text="Voulez-vous vraiment supprimer les paquets inutiles ?"

.... ainsi pour tout les cas possibles.

Le echo "ok" étant là à titre d'exemple, juste pour vérifier le fonctionnement. comment faire pour que cette petite condition fonctionne et ainsi permet au script de continuer sa route.

Puisque pour le moment,  c'est impossible :

./Shell script.sh: line 17: erreur de syntaxe près du jeton `elif' inattendu
./Shell script.sh: line 17: `elif [ "$Cond" = "$Op2" ]; then'

Dernière modification par Soulou (Le 09/07/2008, à 18:39)

Hors ligne

#2 Le 09/07/2008, à 01:15

Dark-Sham

Re : [Résolu] Apprentissage du shell

Soit tu écris

elif [ "$Cond" = "$Op2" ]; then;

Soit

elif [ "$Cond" = "$Op2" ]
then
[suite]

wink


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#3 Le 09/07/2008, à 10:39

Soulou

Re : [Résolu] Apprentissage du shell

Merci pour ta réponse ... Mais finalement, le problème n'est pas là, c'est ça que je souhaiterais régler :

while [ "$?"="0" ]; do echo "ok" done

lorsque je le retire, tout marche..

Hors ligne

#4 Le 09/07/2008, à 10:41

Totor

Re : [Résolu] Apprentissage du shell

ça devrait être mieux comme ça

while [ "$?" == "0" ]; do; echo "ok"; done;

-- Lucid Lynx --

Hors ligne

#5 Le 09/07/2008, à 10:43

Soulou

Re : [Résolu] Apprentissage du shell

Négatif smile

$ ./Shell\ script.sh 
./Shell script.sh: line 15: erreur de syntaxe près du jeton `;' inattendu
./Shell script.sh: line 15: `	while [ "$?" == "0" ]; do; echo "ok"; done;'
if [ "$Cond" = "$Op1" ]
then	zenity --question --title="Confirmation" --text="Voulez-vous vraiment Vider la corbeille ?"
	while [ "$?" == "0" ]; do; echo "ok"; done;
	
elif [ "$Cond" = "$Op2" ]

Hors ligne

#6 Le 09/07/2008, à 10:45

philou8237

Re : [Résolu] Apprentissage du shell

Perso j'écrirais plutot :

while [ $? -eq 0 ]; do
   # blabla...
done

$? est une valeur numérique donc n'en fait pas une chaîne.

Hors ligne

#7 Le 09/07/2008, à 10:47

Soulou

Re : [Résolu] Apprentissage du shell

oui effectivement j'ai trouvé, la syntaxe correct :

while [ "$?" == "0" ]; do echo "ok"; done;

quand à la chaîne je me suis bien rendu compte que ce n'était pas ce qu'il fallait xD, merci smile

Hors ligne

#8 Le 09/07/2008, à 10:50

Soulou

Re : [Résolu] Apprentissage du shell

voila, ce qu'il fallait correspond plutôt à ça

if [ $? -eq 0 ]; then echo "ok"; else echo "Cancel"; fi;

et ça marche smile

Hors ligne

#9 Le 09/07/2008, à 11:26

Soulou

Re : [Résolu] Apprentissage du shell

Un nouveau problème se pose,

elif [ "$Cond" == "$Op2" ]
then	zenity --question --title="Confirmation" --text="Voulez-vous vraiment supprimer les paquets inutiles ?"
	if [ $? -eq 0 ]; then gksudo apt-get autoremove; else echo "Cancel"; fi;

la commande apt-get autoremove demande une validation, comment faire pour qu'elle soit automatique ?


C'est bon j'ai trouvé <_<, faut que je cherche plus avant de poster xD "-y"

Dernière modification par Soulou (Le 09/07/2008, à 11:28)

Hors ligne

#10 Le 09/07/2008, à 17:21

Dark-Sham

Re : [Résolu] Apprentissage du shell

Un petit [Résolu] dans le titre ? smile


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#11 Le 09/07/2008, à 18:39

Soulou

Re : [Résolu] Apprentissage du shell

Voilà qui est fait, merci de votre aide, sûrement à une prochaine, j'utiliserais le même topic ^_-

Hors ligne