read -p Antwort auswerten

  • Hi All,


    Hab hier ein komplexeres Script und darin z.b: nen Part wie folgt,

    Code
    echo -e "$green"
    while true; do
        read -p "how many EXTRA_PARTITIONS do you want to create ? " -n 1
        case $REPLY in
            [1-9]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
                * ) echo -e "\n${yellow}please answer with numbers from 1 to 9.${green}\n";;
        esac
    done


    Das funktioniert ja auch wunderbar, doch möchte ich das nun erweitern so das auch eine zweistellige Angabe möglich ist also in etwa so,

    Code
    echo -e "$green"
    while true; do
        read -p "how many EXTRA_PARTITIONS do you want to create ? " #-n 2
        case $REPLY in
            [0-9]|[1-6]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
                * ) echo -e "\n${yellow}please answer with numbers from 1 to 16.${green}\n";;
        esac
    done


    Das klappt auch, doch so kann ich keine Limitierung haben also ich möchte ja nicht mehr als 16 Partitionen erlauben.

    Bei dieser Variante kann ich ja leider auch z.b: 17 wählen, und leider geht das so auch nur mit nachfolgenden Druck auf die Enter Taste.


    Ich hätte also gerne das man nur ne Zahl zwischen 1 - 16 wählen kann und sonst gar nix anderes angeben kann, und am Liebsten

    auch noch ohne danach die Enter Taste drücken zu müssen.


    So klappt das ja bei der obersten Variante, doch eben nur von 1 - 9.


    Wenns dann nur mit z.b: von 01 - 16 klappt und ich so keine Enter Taste drücken muss wäre das auch ok, dann müsste ich danach

    halt noch die führende Null löschen da das komplette Script etwas gross ist mittlerweile und von dieser Auswertung einiges abhängt

    (müsste sonst wieder einiges mehr im Script ändern).


    Hat jemand ne Idee ?


    EDIT !

    Also so ginge es fürs Erste,

    Code
    echo -e "$green"
    while true; do
        read -p "how many EXTRA_PARTITIONS do you want to create ? " -n 2
        case $REPLY in
            [0][1-9]|[1][0-6]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
                * ) echo -e "\n${yellow}please answer with numbers from 01 to 16.${green}\n";;
        esac
    done


    Gäbe es ne schönere Lösung als mit führender Null und dennoch nicht die Enter Taste zu benötigen

    (egal ob ein oder zweistellige Eingabe) ?


    Gruss

    Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

    Einmal editiert, zuletzt von Bert ()

  • Gäbe es ne schönere Lösung als mit führender Null und dennoch nicht die Enter Taste zu benötigen

    (egal ob ein oder zweistellige Eingabe) ?

    Die Frage ist halt, was man machen will, wenn eine 1 eingegeben wurde - da könnte man höchstens mit einem Timeout arbeiten, aber ich finde das ähnlich wackelig wie auf die Eingabetaste zu verzichten...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi seahawk1986,


    Danke, ist auch wenn wackelig trotzdem ne gute Lösung.

    Hatte mir derweil das gebastelt,


    Das klappt gar nichtmal so schlecht (verwende #!/bin/sh) , und ist auch schön kurz, doch mich stört halt das man dabei bei 1-9 immer ne Null zuvor mit angeben muss.


    Gruss

    Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!