read -p Antwort auswerten

  • Hi All,


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

    Code
    1. echo -e "$green"
    2. while true; do
    3. read -p "how many EXTRA_PARTITIONS do you want to create ? " -n 1
    4. case $REPLY in
    5. [1-9]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
    6. * ) echo -e "\n${yellow}please answer with numbers from 1 to 9.${green}\n";;
    7. esac
    8. 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
    1. echo -e "$green"
    2. while true; do
    3. read -p "how many EXTRA_PARTITIONS do you want to create ? " #-n 2
    4. case $REPLY in
    5. [0-9]|[1-6]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
    6. * ) echo -e "\n${yellow}please answer with numbers from 1 to 16.${green}\n";;
    7. esac
    8. 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
    1. echo -e "$green"
    2. while true; do
    3. read -p "how many EXTRA_PARTITIONS do you want to create ? " -n 2
    4. case $REPLY in
    5. [0][1-9]|[1][0-6]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
    6. * ) echo -e "\n${yellow}please answer with numbers from 01 to 16.${green}\n";;
    7. esac
    8. 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:PIntel Core Duo 2,93 Ghz, AsusP5QL PRO, Gigabyte GeForce GT730 (vdpau), Budget TT-S2 1600, 4Gb Ram Dual Channel, 2x Sata Hd
    Multibootsystem
    yavdr-0.6 mit VDR 2.2.0, Ausgabe über Nvidia vdpau

    The post was edited 1 time, last by 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:PIntel Core Duo 2,93 Ghz, AsusP5QL PRO, Gigabyte GeForce GT730 (vdpau), Budget TT-S2 1600, 4Gb Ram Dual Channel, 2x Sata Hd
    Multibootsystem
    yavdr-0.6 mit VDR 2.2.0, Ausgabe über Nvidia vdpau