2017-04-26 3 views
1

Also habe ich die Beispiele einer While-Schleife nachgeschlagen und das Skript so zusammen und noch immer Probleme haben. Wenn ich raten sollte, würde ich es mit dem arithmetischen Teil der bc-Funktion sagen.Problem mit einer Bash-Schleife, die eine Ganzzahl verwendet

Ich möchte die Schleife zu laufen, bis ich tausend und dann zählte, wie oft es lief. Ich bin noch nicht im zählenden Teil des Skripts, da ich immer noch versuche, es zum Laufen zu bringen (ja, ich weiß, dass awk einfacher wäre). Diese

ist das, was ich bisher:

#!/bin/bash 
total=120 #this will be a variable that is read in from a menu but 120 is ok for now 
while [ $total -lt 1000000 ] 
do 
echo $total 
total=$(bc<<<"scale=2;$total + $total * .1") #I don't know if I have to use "let" before total but it did not make a difference. 
done. 

ich mit der Linie eine Störung erhalte, die mit „total“ beginnt aber die Struktur des Befehls scheint alle Beispiele passen ich finden konnte. Was gibt?

+0

Es gibt zwei Linien, die mit beginnen "total", aber ich würde erwarten, dass Sie einen Fehler in Zeile 3 bekommen, der mit 'While' beginnt, und ich würde erwarten, dass der Fehler' While: command not found' ist (das Schlüsselwort "while" wird nicht groß geschrieben). Sobald das behoben ist, würde ich erwarten, dass Fehler über "1.000.000" keine Ganzzahl sind. –

+0

Wenn ich dies an der Eingabeaufforderung läuft, funktioniert es gut, aber in einer Schleife ... nicht so sehr insgesamt = 120 Gesamt = $ (bc <<< "Maßstab = 2; $ total + $ total * .1"); Echo $ total --und dann ist die Ausgabe 132.0 – Grunt

Antwort

3

Verwenden Sie auch bc für den Vergleich.

#!/usr/bin/env bash 

total=120 
while [ "$(bc <<< "$total < 1000000")" == 1 ] 
do 
    echo $total 
    total=$(bc <<< "scale=2;$total + $total * .1") 
done 
+1

DANKE SOO VIEL! Ich freue mich darauf, der Typ zu sein, der in ein paar Jahren aushilft. – Grunt

0

Solange Sie mit ganzen Zahlen zu tun haben, können Sie Ihre Schleife mit dem arithmetischen Ausdruck ((...)), ohne die Notwendigkeit für einen externen Befehl wie bc schreiben:

#!/bin/bash 
total=120 
while ((total < 1000000)); do 
    echo $total 
    ((total = total + total/10)) 
done 
Verwandte Themen