2016-07-13 14 views
-1

Ich erhalte den Fehler Zeile 8: [: N: Ganzzahl-Ausdruck erwartet. Ich habe versucht, die „“ im $ userManuf entfernen und = zu == verändert und ich immer noch den Fehler erhalten. Was soll ich machen?Zeile 8: [: N: Ganzzahl-Ausdruck erwartet

Dank
function manuf { 
echo -n "Manufacturer: " ; read userManuf 
varManuf=$(mysql -D snipeit -e "SELECT count(id) FROM manufacturers;") 
countManuf=$(echo $varManuf | awk '{print $2}') 

if [ $userManuf -ne 0 ] && [ $userManuf -le $countManuf ]; then 
    assetModelManuf=$userManuf 
elif [ "$userManuf" = "n" ] || [ "$userManuf" = "N" ]; then 
    echo -n "Type new manufacturer name: " ; read userNewManuf 
    assetModelManuf=$userNewManuf 
else echo "Try again!" && manuf 
fi 
} 
+0

Sie müssen angeben, um welche Sprache es sich handelt. Verwenden Sie Tags. – Laurel

+0

Danke für die Erinnerung, seine Bash-Skript und ich bin neu in diesem Bereich. Ja, ich lese über das Schreiben von bedingten Ausdrücken und auch Vergleich –

Antwort

2

Der Fehler auftritt, wenn $userManuf-N erweitert, aber sie versuchen, es als Operand -ne mit dem integer Operator zu verwenden. Die einfachste Fix wäre zu überprüfen, ob es einen numerischen Wert hat erste (dann eine arithmetische Anweisung den Vergleich zu vereinfachen):

if [[ $userManuf =~ [0-9]+ ]] && ((0 < userManuf && userManuf <= countManuf)); then 
    assetModelManuf=$userManuf 
elif [[ $userManuf = [nN] ]]; then 
    read -p "Type new manufacturer name: " assetModelManuf 
else 
    echo "Try again!" && manuf 
fi 

Sie wahrscheinlich auch eine while Schleife verwenden möchten stattdessen manuf rekursiv aufzurufen. Ich überlasse das als Übung (oder eine zukünftige Frage, falls nötig).

+0

Vielen Dank @chepner, ich werde versuchen zu studieren ** während while ** Schleife für eine Weile. Können Sie bitte den Unterschied der Verwendung von ** [**/** (** und ** [[**/** (**) oder Link einer Website ?. Vielen Dank! –

+0

@PauloBernardo BashFAQ einen Artikel auf [] Testbefehle (einschließlich '[]' und '[[]]')] (http://mywiki.wooledge.org/BashFAQ/031), und andere auf [Shellarithmetik (einschließlich '(())')] (http://mywiki.wooled.org/Arithmetikausdruck). –

Verwandte Themen