Ich habe ein Problem mit dem Befehl bc. Der Ausgang erzeugt ist:Syntaxfehler Bash-Befehl bc
(standard_in) 2: syntax error
Hier ich meinen Code schreiben, werden alle Vorschläge geschätzt.
value="100%" # the threshold to cause a break out
kb="kB/s"
mb="MB/s" # strings to mask out
conversor=1024 # kb->mb conversion
contador=0 # initalize our total in megabytes
for ((x=3; x<=${#array[@]}; x+=5)); do
paraula=${array[$x]};
if [[ $paraula =~ .*kB.* ]]; then
paraula=${paraula%$kb}
paraula=$(echo "scale=4; $paraula/$conversor" | bc) # convert to $mb
contador=$(echo "scale=4; $contador+$paraula" | bc)
echo "Counting: "$contador
else
paraula=${paraula%$mb}
contador=$(echo "scale=4; $contador+$paraula" | bc)
echo "Counting: "$contador
fi
if [[ " ${array[$x]} " =~ " $value " ]]; then
break;
fi
echo "Value : ${array[$x]} ";
done
echo "final value: $contador"
dann der Fehler auf dem Terminal nach Ausführung des Skripts ist
Können Sie dies zu einem [mcve] vereinfachen? Sie können wahrscheinlich den gleichen Fehler von einer einzelnen Codezeile erhalten, die nur 'bc' aufruft. –
Verwenden Sie 'bash -x yourscript ', um alles zu protokollieren, was das Skript tut, um den Ort zu finden, an dem es zum ersten Mal schief geht. Wenn Sie möchten, dass die Verfolgung etwas einfacher ist, können Sie PS4 einen Wert zuweisen, der die Zeilennummer enthält. Zum Beispiel könnten Sie alle auf einer Zeile ausführen: 'PS4 = ': $ {LINENO} +' bash -x yenscript '. (Beachten Sie, dass 'PS4' aus Sicherheitsgründen in sehr neuen bash-Versionen innerhalb Ihres Skripts gesetzt werden muss, wenn das Skript als root ausgeführt wird). –
BTW, fügen Sie bitte die oben angefragten Protokolle als Text zur Frage hinzu, nicht Screenshots. Siehe die akzeptierte Antwort zu [Warum nicht Bilder von Code auf SO hochladen, wenn Sie eine Frage stellen?] (Https://meta.stackoverflow.com/a/285557/14122) –