Bonjour :)
Je souhaite vérifier que ma partition /usr/obj est bien montée avant de lancer le processus de formatage.
J'ai une piste avec la commande:
Existe-t-il d'autres solutions s'il vous plaît ?Code:mount | grep wd0h
Merci :mrgreen:
Version imprimable
Bonjour :)
Je souhaite vérifier que ma partition /usr/obj est bien montée avant de lancer le processus de formatage.
J'ai une piste avec la commande:
Existe-t-il d'autres solutions s'il vous plaît ?Code:mount | grep wd0h
Merci :mrgreen:
Voilà où j'en suis :oops:
Sauf que j'obtiens une erreur:Code:
1
2
3
4
5
6
7
8
9
10
11 if [[ ! -d /usr/obj ]] then echo "=> /usr/obj doesn't seem to exist!" return 0 else if [[ ! `/sbin/mount | /usr/bin/grep /usr/obj` ]] then sudo /sbin/mount /usr/obj && sudo /sbin/newfs wd0h && sudo /sbin/mount /usr/obj else echo "=> Error /usr/obj is already mounted!" return 0 fi fi
Logiquement, cela devrait fonctionner 8OCode:syntax error: `$(/sbin/mount | /usr/bin/grep /usr/obj)' missing expression operator
:oops:
Bonjour :)
Je me suis trompé lors de la recopie. La ligne corrigée:Citation:
sudo /sbin/mount /usr/obj && sudo /sbin/newfs wd0h && sudo /sbin/mount /usr/obj
Concernant les backquotes, je ne vois pas le problème 8OCode:sudo /sbin/umount /usr/obj && sudo /sbin/newfs wd0h && sudo /sbin/mount /usr/obj
Peux-tu me donner des explications s'il te plaît ?
Merci :mrgreen:
PS: ces fonctions sont utilisées dans mon fichier /etc/profile et non un script shell.
Pas de pb
La backquotte est un mécanisme shell qui te permet de récupérer un résultat qui aurait été normalement affiché à l'écran
Exemple:
=> ça t'affiche à l'écran la date du jour (normal)Code:date
=> l'affichage écran est récupéré par le shell et celui-ci remplace la commande entre backquotes par son résultat. Bien sûr, dans cet exemple cela ne sert pas. Pour que ça serve, il faut traiter cet affichage par un moyen quelconque donc on peut avoirCode:`date`
ou bienCode:var=`date`
Autre exempleCode:
1
2
3
4 for i in `date` do echo $i done
Exécution simple de la commande "pwd"Code:pwd
Donc là, la commande "pwd" est exécutée et tout son affichage (le répertoire courant) vient remplacer ladite commande. Puis le shell continue son exécution et compare le résultat en question (le répertoire courant) avec la chaine "/home/truc"Code:
1
2
3
4 if `pwd` = "/home/truc" then echo oui fi
Donc pour résumer
- si t'as juste besoin d'exécuter la commande (par exemple pour vérifier qu'elle réussi), tu l'inscrits telle quelle. Au besoin, si t'as pas envie d'avoir d'affichage, tu le rediriges vers /dev/null
Exemple
- si tu utilises les backquotes, c'est que t'as besoin de récupérer et traiter dans ton script le résultat qui aurait été affiché par la commande si tu l'avais lancée sans backquotesCode:
1
2
3
4
5
6
7
8 #!/bin/sh # Script qui vérifie si un fichier existe if ls $1 1>/dev/null 2>/dev/null then echo "$1 existe" else echo "$1 n'existe pas" fi
Exemple
Donc pour ton script, tu devrais remplacer la ligneCode:
1
2
3
4
5
6
7
8 #!/bin/sh # Script qui vérifie si je me trouve dans mon HOME if test `pwd` = "$HOME" then echo "Je dans mon HOME" else echo "Je ne suis pas dans mon HOME fi
par la ligneCode:else if [[ ! `/sbin/mount | /usr/bin/grep /usr/obj` ]] then
et ça devrait marcher (t'as pas vraiment besoin de récupérer l'affichage issu du grep, t'as juste besoin de vérifier si le grep a réussi ou pas...)Code:else if ! /sbin/mount | /usr/bin/grep /usr/obj 1>/dev/null then
Tu peux aussi utiliser une voie plus compliquée (et plus longue en terme CPU) avec l'instruction suivante
Là, tu récupères l'affichage issu du grep qui devient une simple chaine et tu testes si cette chaine est vide ou pas...Code:else if [ -z "`/sbin/mount | /usr/bin/grep /usr/obj`" ] then
En espérant t'avoir aidé. Tu peux suivre un cours shell Linux ici http://linux.developpez.com/cours/
Merci beaucoup pour tes explications :hola:
Je vais également télécharger et lire ton cours. Cela me fera le plus grand bien :)
Concernant la vérification de la partition, il était possible d'obtenir un code vraiment très simple, tellement simple que je n'y est même pas pensé :mouarf:
Encore une fois, merci pour tout :mrgreen:Code:
1
2
3
4
5
6
7
8
9 if /sbin/mount | /usr/bin/grep "/usr/obj"; then sudo /sbin/umount /usr/obj fi sudo /sbin/newfs wd0h if [[ $? != 0 ]] then echo "=> Error formatting /usr/obj!" return 0 fi sudo /sbin/mount /usr/obj && cd /usr/src && sudo /usr/bin/make obj
Et encore, je me demande si t'aurais pas avantage à faire un umount systématique même si /usr/obj n'est pas montéCode:
1
2
3
4
5
6
7 /sbin/mount | /usr/bin/grep "/usr/obj" && sudo /sbin/umount /usr/obj sudo /sbin/newfs wd0h ; status=$? if [[ $status -ne 0 ]] then echo "=> Error formatting /usr/obj!" return 0 fi sudo /sbin/mount /usr/obj && ( cd /usr/src ; sudo /usr/bin/make obj )
PS: Non non, t'es pas un parano du spam toi avec une telle adresse ervivyb@ervatreb.bsav qu'il faut se déchiffrer à la César... mais si c'est bien ce que je pense, il me semble que le "b" de "ervatreb" est en trop...Code:
1
2
3
4
5
6
7 sudo /sbin/umount /usr/obj 2>/dev/null sudo /sbin/newfs wd0h ; status=$? if [[ $status -ne 0 ]] then echo "=> Error formatting /usr/obj!" return 0 fi sudo /sbin/mount /usr/obj && ( cd /usr/src ; sudo /usr/bin/make obj )