Ich unterrichte mich BashFehler in der Logik wahrscheinlich
Wie kann ich das funktionieren lassen?
Es gibt drei Checkpoints ... Keine Leerzeilen, keine Sonderzeichen und keine Zahlen, die kleiner als 1 und größer als die größte Zahl
jedoch am dritten Kontrollpunkt, wenn Sie versuchen, eine besondere eingeben Charakter, das Ganze fällt wie ein Kartenhaus zusammen.
Wie kann ich sicherstellen, dass der Benutzer keine Leerzeile, keine Sonderzeichen und keine Zahl kleiner als 1 und größer als eine vorgegebene größte Zahl eingibt?
lesen -p „Bitte geben Sie die Zeilennummer eingeben:“ line_number
# First checkpoint
# No blank lines accepted as input
while [[ -z "$line_number" ]] ;
do
echo
echo "Line number can not be blank."
echo
read -p "Please enter a valid line number? " line_number
echo
done
# Second checkpoint
# No special characters allowed as input
# Escaping the backtick or accent grave requires three back slashes before the backtick
while [[ $line_number == *['!'@#\$%^\&*()_+?~-\"\\\`]* ]] ;
do
echo
echo "No special characters allowed"
echo
read -p "Please enter a valid line number? " line_number
echo
done
# Third checkpoint
# No number less than 1 and greater than the $total_line_number
while [[ $line_number -lt 1 || $line_number -gt $total_line_number ]] ;
do
echo
echo -e "Line number can not be lesser than 1$ and bigger than $total_line_number."
echo
read -p "Please enter a number between the 1 and $total_line_number scope? " line_number
echo
done
Ich möchte Bash-Skript erlernen und werden geübt. Ich versuche die Guides zu lesen, aber ich glaube nicht, dass ich das ohne deine Hilfe herausgefunden hätte. Und du warst nicht einmal herablassend. Kudos! Vielen Dank für Ihre Zeit und Ihr Fachwissen! – user8022637
Ich denke, das erfordert 'shopt -s extglob' auch, oder? –
Aktuelle Versionen (d. H. 4.1+) von 'bash' schalten' extglob' vorübergehend ein, während '' [[...]] ''Befehle ausgewertet werden. – chepner