Sed alternatif

spitfire378 Messages postés 2 Statut Membre -  
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,

J'ai créé un script pour appliquer un systeme de fichier a une partition, seul probleme, il ne marche pas, lorsque j'utilise mon sed alternatif en ligne de commande il marche nikel mais dans mon script la fonction renvoie dans tous les cas "c'est mort". Pouvez vous m'aider, mici

function formater()
{
read -p "Choisissez la partition a formater : " partition
read -p "Choisissez le système de fichier : " sdf
echo $sdf > testsdf
fichier=`sed "/(ext3|ext2|swap|reiserfs|XFS)/p" testsdf`
if [ -z $fichier ]
then
echo "C'est jouable"
else
echo "C'est mort" && formater
fi
}

3 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Y'a 2 ou 3 trucs qui me chiffonnent dans ton script !? :-\

La variable "$partition" te sert à quoi ?

La commande "sed" est sensée faire quoi ? Le flag "p" ne sert à rien si tu n'emploies pas le switch "-n". Dans ton cas, que les motifs "ext3|ext2|swap|reiserfs|XFS" soient trouvés ou pas, le contenu du fichier "testsdf" est affecté à la variable "$fichier".

Sans le switch "-r" tu es obligé de protéger tes pipes avec un backslash "\|".

Dis-nous plutôt ce que tu veux faire exactement, que veux-tu récupérer dans ta variable "$fichier" ?
0
spitfire378 Messages postés 2 Statut Membre
 
oops en effet j'avais un peu modifié mon code juste pour le tester. Alors en fait je veux créer un petit script demandant a l'utilisateur quelle partition il veut formater et quelle système de fichier il veut utiliser, mais je voulais utiliser un sed alternatif pour vérifier que le système de fichier entré par l'utilisateur existe bien.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Utilise plutôt une fonction "case ... esac", non ?
case "$sdf" in
ext3|ext2|swap|reiserfs|XFS)    echo "C'est jouable"
                                               ;;
*)                                            echo "C'est mort" && formater
                                               ;;
esac
;-))
0