Eine Zeile if-Anweisung in bash

8

Ich habe noch nie in bash programmiert ... aber ich versuche, ein Problem für einen Fehler in einem Spiel (codingame.com) zu lösen

Ich habe den folgenden Code:

%Vor%

Und dieser Fehler:

%Vor%

Ich möchte benachbarte Werte meines Arrays vergleichen und den minimalen Unterschied zwischen ihnen speichern ... aber ich kann mir nicht vorstellen, wie ich eine If-Anweisung in bash machen soll

    
RagnaRock 29.06.2015, 14:49
quelle

3 Antworten

14

Jeder Befehl muss ordnungsgemäß beendet werden, entweder durch einen Zeilenumbruch oder ein Semikolon. In diesem Fall müssen Sie die Zuordnung von result vom Schlüsselwort fi trennen. Versuchen Sie ein Semikolon hinzuzufügen;

%Vor%

Außerdem müssen Sie lt anstatt < verwenden, da < ein Umleitungsoperator ist. (Es sei denn, Sie möchten einen Befehl mit dem Namen $tmp mit einer Eingabe aus einer Datei namens $result ausführen)

    
William Pursell 29.06.2015, 14:51
quelle
6

Sie verpassen ein Semikolon und müssen -lt anstelle von < verwenden, wie andere darauf hingewiesen haben.

Eine Alternative zur if -Anweisung wäre die Verwendung des logischen und Operators && :

%Vor%     
hek2mgl 29.06.2015 14:53
quelle
-1

Auf Ihr if muss ein Befehl fi folgen, aber Sie haben keinen solchen Befehl. Sie haben eine fi in Ihrem Code, aber es ist in der Mitte eines anderen Befehls, so dass es nicht mehr vervollständigt die if dann die fi in echo fi würde. Wenn Sie Linien zusammenführen möchten, müssen Sie ein Semikolon verwenden, um die Befehle zu trennen.

Also zusammenbrechen

%Vor%

würdest du

verwenden %Vor%
  • Ausnahme: Auf do und then kann ein Befehl folgen, so dass Sie nach dem Zusammenführen in der nächsten Zeile kein Semikolon benötigen.

  • Beachten Sie, dass Sie Ihre Befehle nicht mit ; beenden müssen? ; wird nur zwischen Befehlen benötigt.

  • Innerhalb von test ( [] ) wird -lt zum Vergleichen von Zahlen verwendet.

ikegami 29.06.2015 14:52
quelle

Tags und Links