Ich versuche, 1 Nummer über die Befehlszeile und eine Nummer als Standard hinzuzufügen. Beispiel: Wenn der Benutzer die Nummer 50 eingibt, wird die Das Skript fügt 10 hinzu (als Standardnummer).
./script 50 The sum of 50+ 10 is 60.
Dies ist, was ich bisher habe.
echo -n "Please enter a number: " read number default = 10 sum = $((default + number)) // this line does not seem to work echo "The sum of $number and 10 is $sum."
Habe ich die falsche Syntax? Ich bin nicht sicher, ob ich auf dem richtigen Weg bin. Füge ich die falschen Zahlen hinzu? Soll ich stattdessen awk verwenden?
let sum = $default + $number
Kommentare
- Nur zum Hinzufügen, anstatt
echo
und dann die Verwendung vonread
Sie können direkt Folgendes eingeben:read -p 'Please enter a number: ' yournumber
Antwort
Leerzeichen verursachen die Fehler.
Wenn der Benutzer die Nummer eingeben soll, wenn er als „Bitte geben Sie eine Nummer ein:“ aufgefordert wird, können Sie Ihr Skript mit verwenden Einige Korrekturen wie:
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Überprüfen Sie:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Wenn Sie die USA möchten Um die Nummer als Argument für das Skript einzugeben, können Sie das folgende Skript verwenden:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Überprüfen Sie:
./temp.sh 50 The sum of 50 and 10 is 60.
Kommentare
- Warum sollte man bc ausführen, um einfache Ganzzahlarithmetik durchzuführen?
Antwort
Sie sollten keine Leerzeichen zwischen „default = 10“ & „sum = $“ haben, auch default & Nummer sollte $ vor sich haben, um aus den Variablen zu lesen.
Das Skript funktioniert dann wie erwartet für mich, wenn es wie folgt geschrieben wird;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Kommentare
- Oh, ich verstehe! Ich hab es jetzt. Es war nur ein Abstandsproblem. Ich habe das wirklich überlegt. Vielen Dank für die Hilfe!
- Beachten Sie, dass Sie nicht ' t die
$
innerhalb des arithmetischen Ausdrucks. Versuchen Sie dies beispielsweise:num=5;def=10;echo "sum = $((num + def))"
Antwort
Dies ist der schnellste Weg, um das zu tun, was Sie verlangen:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Ausgabe:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Kommentare
- das könnte gefährlich sein – versuchen Sie
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Sehr genau, jedoch für die Übung I ' Ich bin nicht sicher, ob es sich um ein Problem handelt. Trotzdem vielen Dank für Ihren Kommentar.