logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 30-01-2016 10:59:01

deuchdeb
Moderato ma non troppo
Distrib. : Debian11-KDE-Plasma, LinuxMintCinnamon, DFLinux11
Noyau : Noyau stable
(G)UI : KDE Plasma 5.20
Inscription : 13-01-2010
Site Web

(Résolu) Cherche commande bash Oui - Non

Bonjour,

J'ai fait un script bash pour la sauvegarde des répertoires utilisateur vers un disque USB.
Cela fonctionne bien.

Le sript fait dans un 1er temps une simulation et si tout va bien et que je veux faire la sauvegarde je choisis 1 sinon je choisis sur 0 et c'est fini.

Je voudrais que à la place des chiffres 1 ou 0, on puisse entrer les lettres O (oui) ou N (non). Mais je n'y arrive pas.

Voici le script.

#!/bin/bash

echo 'SIMULATION SAUVEGARDE DOCUMENT VERS DisqueUSB'
rsync -r -t -v -n --progress --modify-window=1 -l -s "/home/utilisateur/Documents/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Documents/"
echo 'SIMULATION SAUVEGARDE IMAGES VERS DisqueUSB'
rsync -r -t -v -n --progress --modify-window=1 -l -s "/home/utilisateur/Images/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Images/"
echo 'SIMULATION SAUVEGARDE MUSIQUE VERS DisqueUSB'
rsync -r -t -v -n --progress --modify-window=1 -l -s "/home/utilisateur/Musique/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Musique/"
echo 'SIMULATION SAUVEGARDE VIDEOS VERS DisqueUSB'
rsync -r -t -v -n --progress --modify-window=1 -l -s "/home/utilisateur/Vidéos/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Vidéos/"

echo 'SIMULATION TERMINEE'


echo "Doit-on faire la sauvegarde (1 = oui / 0= non) ?"
read Variable # saisie de la variable
if test $Variable -eq 1 # si Variable vaut 1

then # alors
    echo 'SAUVEGARDE DOCUMENT VERS DisqueUSB'
    rsync -r -t -v --progress --modify-window=1 -l -s "/home/utilisateur/Documents/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Documents/"
    echo 'SAUVEGARDE IMAGES VERS DisqueUSB'
    rsync -r -t -v --progress --modify-window=1 -l -s "/home/utilisateur/Images/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Images/"
    echo 'SAUVEGARDE MUSIQUE VERS DisqueUSB'
    rsync -r -t -v --progress --modify-window=1 -l -s "/home/utilisateur/Musique/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Musique/"
    echo 'SAUVEGARDE VIDEOS VERS DisqueUSB'
    rsync -r -t -v --progress --modify-window=1 -l -s "/home/utilisateur/Vidéos/" "/media/utilisateur/DisqueUSB/home/Mes Documents/Vidéos/"
    echo "SAUVEGARDE TERMINEE"
 else
    echo "Au Revoir"    
fi # fin du bloc if
#read


Une fleur, c'est magique non? smile
Association Debian Facile

Hors ligne

#2 30-01-2016 11:06:51

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Re : (Résolu) Cherche commande bash Oui - Non

Voilà le test :


if [ "$Variable" = "O" ]; then
#lalalala
fi
 


smile

Hors ligne

#3 30-01-2016 11:19:23

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : (Résolu) Cherche commande bash Oui - Non

Le plus simple reste


read -p "Oui ou Non : " reponse



poste la question OUi NON et stocke la réponse dans la variable ${reponse} en bash


" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#4 30-01-2016 11:24:52

deuchdeb
Moderato ma non troppo
Distrib. : Debian11-KDE-Plasma, LinuxMintCinnamon, DFLinux11
Noyau : Noyau stable
(G)UI : KDE Plasma 5.20
Inscription : 13-01-2010
Site Web

Re : (Résolu) Cherche commande bash Oui - Non

Merci, je vais testé ces solutions. cool

Une fleur, c'est magique non? smile
Association Debian Facile

Hors ligne

#5 30-01-2016 11:28:20

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : (Résolu) Cherche commande bash Oui - Non

echo -n 'Doit-on faire la sauvegarde ? (o/n) '
read maj
if [ "$maj" = o ] || [ "$maj" = O ] || [ "$maj" = oui ] || [ "$maj" = OUI ] ; then
......
fi

Hors ligne

#6 30-01-2016 11:38:33

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : (Résolu) Cherche commande bash Oui - Non

Severian a écrit :

echo -n 'Doit-on faire la sauvegarde ? (o/n) '
read maj
if [ "$maj" = o ] || [ "$maj" = O ] || [ "$maj" = oui ] || [ "$maj" = OUI ] ; then
......
fi




read -p "Doit-on faire la sauvegarde ? (o/n)" maj
if [[ ${maj} = [Oo] ]]; then
....
fi
 


" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#7 30-01-2016 11:59:54

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : (Résolu) Cherche commande bash Oui - Non

Je propose une solution qui utilise les possibilités de correspondance avec une expression
rationnelle. Ça ne marche pas avec les versions de bash < 3.0, la version proposée
en Jessie devrait donc possédée cette fonctionnalité.


regex="^[Oo]([Uu][Ii])?$"
read -p "Doit-on faire la sauvegarde ? (o/n) : " maj
if [[ "$maj" =~ $regex ]]; then
    echo on fait la sauvegarde
fi
 



Donc il faut répondre soit O ou OUI, et tout ceci étant insensible à casse.
Donc O, o, Oui, OUI, oUI, etc conviendront mais pas « ou » par exemple wink

Hors ligne

#8 30-01-2016 13:57:02

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : (Résolu) Cherche commande bash Oui - Non

enicar a écrit :

Je propose une solution qui utilise les possibilités de correspondance avec une expression
rationnelle. Ça ne marche pas avec les versions de bash < 3.0, la version proposée
en Jessie devrait donc possédée cette fonctionnalité.


regex="^[Oo]([Uu][Ii])?$"
read -p "Doit-on faire la sauvegarde ? (o/n) : " maj
if [[ "$maj" =~ $regex ]]; then
    echo on fait la sauvegarde
fi
 



Donc il faut répondre soit O ou OUI, et tout ceci étant insensible à casse.
Donc O, o, Oui, OUI, oUI, etc conviendront mais pas « ou » par exemple wink



Magnifique
big_smile


" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#9 30-01-2016 17:12:19

Arnaud
Membre
Lieu : Allemagne
Distrib. : Debian Sid
Noyau : Linux 4.3.0-1-amd64
(G)UI : Xfce
Inscription : 08-11-2012

Re : (Résolu) Cherche commande bash Oui - Non

Merci enicar, belle solution wink

Hors ligne

#10 30-01-2016 18:30:39

phlinux
Membre
Distrib. : Buster
Noyau : 5.10
(G)UI : Openbox (+Rox+Feh)
Inscription : 09-05-2009

Re : (Résolu) Cherche commande bash Oui - Non

@ enicar : classe la variable

Je me permet de "bernacler" le fil (désolé @deuchdeb), mais j'ai besoin du même genre de combine là >> https://debian-facile.org/viewtopic.php?id=8610

Pages perso : feh, omegat, udisks, passerelle, schroot vraiment transparent

Hors ligne

#11 30-01-2016 19:34:00

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : (Résolu) Cherche commande bash Oui - Non

/me se demande si on peut pas rafler un point choco bernacle là ?
La moitié d'un peut-être ? big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#12 30-01-2016 19:40:48

deuchdeb
Moderato ma non troppo
Distrib. : Debian11-KDE-Plasma, LinuxMintCinnamon, DFLinux11
Noyau : Noyau stable
(G)UI : KDE Plasma 5.20
Inscription : 13-01-2010
Site Web

Re : (Résolu) Cherche commande bash Oui - Non

@phlinux: Ce n'est pas un "bernacle" mais un subtile aiguillage dans les règles de l'art.

@smolski: Donc pas de point chocolat. Na!!!

De toute façon de mon côté, j'ai déjà là de quoi bien m'amuser.

Je vous tiens au courant.

Une fleur, c'est magique non? smile
Association Debian Facile

Hors ligne

#13 31-01-2016 10:09:08

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : (Résolu) Cherche commande bash Oui - Non


regex="^[Nn]([Oo][Nn])?$"
read -p "Doit-on donner la moitié de nos points chocolat à Smolski? (o/n) : " maj
if [[ "$maj" =~ $regex ]]; then
    echo "on garde nos choco"
fi
 

Dernière modification par Philou92 (31-01-2016 13:10:25)


Tousse antique Ovide !

Hors ligne

#14 31-01-2016 10:31:53

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : (Résolu) Cherche commande bash Oui - Non

Pour les points chocos, j'utiliserais plutôt ce code :


read -p "Doit-on donner la moitié de nos points chocolat à Smolski? (o/n) : "
echo "Non mais, ça ne va pas, on garde tous nos points chocos !"
 


big_smile

Dernière modification par enicar (31-01-2016 10:32:23)

Hors ligne

#15 31-01-2016 11:01:45

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : (Résolu) Cherche commande bash Oui - Non

Pour être complet, on peut faire la même chose à base de grep :


#! /bin/bash
read -p "Doit-on faire la sauvegarde ? (o/n) : " maj
if echo "$maj" |grep -q -E -i '^o(ui)?$'; then
    echo On fait la mise à jour
else
    echo On ne fait pas la mise à jour
fi
 



Et comme le sujet du fil est d'avoir une fonction oui/non
on peut mettre tout cela dans une fonction :


#! /bin/bash
oui_non()
{
    if echo "$1" |grep -q -E -i '^o(ui)?$'; then
        return 0
    else
        return 1
    fi
}

read -p "Doit-on faire la sauvegarde ? (o/n) : " maj

if oui_non "$maj"; then
    echo On fait la mise à jour
else
    echo On ne fait pas la mise à jour
fi
 


Bon, je pense que le sujet est résolu, non ? big_smile

Hors ligne

#16 31-01-2016 18:43:02

deuchdeb
Moderato ma non troppo
Distrib. : Debian11-KDE-Plasma, LinuxMintCinnamon, DFLinux11
Noyau : Noyau stable
(G)UI : KDE Plasma 5.20
Inscription : 13-01-2010
Site Web

Re : (Résolu) Cherche commande bash Oui - Non

En effet cela fonctionne avec la fonction oui_non.

@enicar: peux tu nous expliquer ce petit bout de code:

grep -q -E -i '^o(ui)?$'


Une fleur, c'est magique non? smile
Association Debian Facile

Hors ligne

#17 31-01-2016 19:15:08

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : (Résolu) Cherche commande bash Oui - Non

deuchdeb a écrit :

@enicar: peux tu nous expliquer ce petit bout de code:


grep -q -E -i '^o(ui)?$'
 



Oui bien sûr wink
On commence par les options de grep :

  • -q : n'affiche pas les résultats, dit nous seulement si il y a correspondance.

  • -E : utilise des motifs étendus (car c'est plus simple).

  • -i : la correspondance est insensible à la casse.


J'utilise des motifs étendus car dans les motifs de base il faut
rajouter des \ à tout bout de champ…
L'expression rationnelle '^o(ui)?$', je la mets entre
apostrophes simples pour éviter que le shell ne les interprête.

  • ^ : début de chaine.

  • o : le caractère o

  • (ui)? : est une sous expression :
       

    • ( : debut de sous expression

    • ui : la chaîne ui

    • ) : fin de la sous expression

    • ? : quantificateur qui veut dire zéro ou une fois le caractère ou la sous expression qui le/la précède.

  • $ : fin de chaine.


Dit en français, je demande une chaine qui commence par un « o » et
qui peut être suivit par « ui  » ou non.
voilà smile

Dernière modification par enicar (31-01-2016 19:15:49)

Hors ligne

#18 01-02-2016 01:06:38

Patriboom
Membre
Lieu : Arctique canadien
Distrib. : Bookworm (12)
Noyau : Linux 6.1.0-13-amd64
(G)UI : MATE
Inscription : 25-12-2008
Site Web

Re : (Résolu) Cherche commande bash Oui - Non

Ça fait mon bonheur aussi.
Merci.

Portez la paix
Patrick Allaire, ptre

Hors ligne

#19 01-02-2016 14:14:24

deuchdeb
Moderato ma non troppo
Distrib. : Debian11-KDE-Plasma, LinuxMintCinnamon, DFLinux11
Noyau : Noyau stable
(G)UI : KDE Plasma 5.20
Inscription : 13-01-2010
Site Web

Re : (Résolu) Cherche commande bash Oui - Non

Super pour cette explication de texte très détaillée, j'ai tout compris. cool

Je remarque quand même que l'on peut arriver à une même destination en empruntant de nombreuses routes.
Et rien qu'avec un script bash !!!!

Une fleur, c'est magique non? smile
Association Debian Facile

Hors ligne

#20 12-03-2016 02:43:41

MicP
Membre
Inscription : 29-02-2016

Re : (Résolu) Cherche commande bash Oui - Non

Ici, je n'utilise qu'une touche ("o") sans qu'il soit necessaire de la valider par "Entrée" : Si c'est une autre touche ça voudra dire "Non".

read -sn1 -p "Doit-on faire la sauvegarde ? [o/N]"; echo;
[ "$REPLY" = "o" ] || { echo "Ok, puisque c'est ça, je sors tout de suite de ce script.";exit 1; }
echo "Bon, d'accord, alors je vais lancer la sauvegarde."
echo "Et c'est parti pour une sauvegarde…"

Et puis, si c'est NON, le code de retour du script sera à "1".
Plutôt que de créer une variable, j'utilise  la variable bash REPLY

=======
Sinon, on peut aussi en faire une fonction :

function questionOuiNon {
    read -sn1 -p "${1} ? [o/N]"; echo;
    return $( [ "$REPLY" = "o" ] )
}

questionOuiNon "Doit-on faire la sauvegarde" || { echo "On fait pas de sauvegarde et on quitte avec un code de retour à 1"; exit 1; }

echo "C'est parti pour une sauvegarde…"

Dernière modification par MicP (12-03-2016 06:52:40)

Hors ligne

Pied de page des forums