2016-04-23 10 views
-3

Bitte helfen Sie mir mit diesem Fehler, den ich mit einem Shell-Skript in Bash erhalten: line 8: [: 2: unary operator expectedBash Fehler: "Zeile 8: [: 2: unärer Operator erwartet"

#!/bin/bash 

echo "Input your number for factorial calculation: " 
read $nr 

counter=2 
factorial=1 

while [ $counter -le $nr ] 
do 
factorial=$(($factorial * $counter)) 
counter=$(($counter + 1)) 
done 

echo "The result " $nr "! is:" 
echo $factorial 

etwas mit der währenden Linie falsch ist. Vielleicht wird die $nr nicht richtig verwendet?

+0

verwenden 'while [[...]]' – SMA

+2

In der Zukunft, fügen Sie bitte den Code direkt in die Frage, nicht zu einem Bild verknüpfen. –

+0

BTW, betrachte 'while ((counter <= nr)); do ' –

Antwort

2

read nimmt Namen der Variablen, nicht ihren Wert. Sie müssen read $nr durch ersetzen.

0

Sie scheinen Probleme Formatierung der Frage sein zu müssen, also kann ich es nicht sehen, aber Sie in der Regel, dass die Fehlermeldung erhalten, wenn Sie so etwas wie if [ $a -ne $b ] aber einem von $a oder $b ist leer, also im Grunde die Dolmetscher etwas wie if [ -ne $b ] sehen. Sie Möglichkeiten, es zu vermeiden, sind entweder

  1. Stellen Sie sicher, dass die Variablen vor einem solchen Test festgelegt sind, oder
  2. Quote die Variablen, so dass auch ein leerer oder nicht definiert wird man als eine leere Zeichenfolge zu sehen. Obwohl Sie an dieser Stelle nur einen String verwenden können, keinen numerischen Vergleich. if [ "$a" != "$b" ]