Problem beheben Bash Unary Operator erwartet erwartet

Problem beheben Bash Unary Operator erwartet erwartet
Fehler haben eine vielfältige Anzahl von Typen und Gründen, wenn es um die Bash -Programmierung geht. Einer dieser Fehler ist der Fehler „Unary Operator erwartete“ bei der Bash -Programmierung. Bei der Bewertung der Ausdrücke in bedingten Erklärungen können Sie auf das Problem „Unary Operator erwartet“ stoßen. Die Gründe für diesen Fehler „Bash Unary Operator erwartet“ könnten vielfältig sein. Wir werden zunächst darüber sprechen, was das Problem erzeugt. Anschließend werden wir einige Optionen zur Lösung dieses Problems durchlaufen. Beginnen wir mit dem heutigen Artikel, indem wir eine neue Bash -Datei in Ubuntu 20 erstellen.04 System. Dafür müssen wir den Anweisungen „Touch“ innerhalb des Shell -Terminals verwenden und die Datei „Unary“ benennen.Sch". $ touch Unary.Sch
$ nano unary.Sch

Beispiel

Wir werden unser erstes Beispiel für diesen Artikel beginnen, indem wir einen neuen Bash -Code im „Unary erstellen.sh ”Datei. Wir werden die bedingte Aussage zur Abbildung dieses Fehlers verwenden. In dieser Codedatei haben wir den Bash -Support in der ersten Zeile als „# hinzugefügt“ hinzugefügt!/bin/bash ”. Wir probieren die Read-Anweisung aus, um die Eingabe vom Benutzer mit der Option „-P“ zu nehmen und diese Eingabe in die Variable „V) hinzuzufügen.Die IF-ELSE-Anweisung ist hier, um nach dem Zustand zu suchen. Es wird überprüft. Um die Gleichheit zu überprüfen, haben wir den Vergleichsoperator „-eq“ verwendet. Wenn der von einem Benutzer hinzugefügte Wert mit der Nummer 14 übereinstimmt, zeigt der Teil „dann“ mit Hilfe einer „Echo“ -Klaus. Andernfalls wird der else -Teil seine Anweisung "Echo" ausführen, in der die Nachricht "Wert nicht übereinstimmt" an der Shell anzeigt. Der Code ist hier abgeschlossen und wir können ihn jetzt ausführen.

Nachdem wir den Bash -Code gespeichert hatten, haben wir ihn mit der Bash -Anweisung ausgeführt. Es stellt sich heraus, dass es nach der Eingabe vom Benutzer fragt. Ein Benutzer hat den Wert "67" im Feld hinzugefügt und eingegeben. Da der Wert nicht mit dem angegebenen Wert in der Bedingung "if" übereinstimmt, wurde der Teil "else" ausgeführt und "Wert nicht übereinstimmt" angezeigt, wie in der unten gezeigten Ausgabe angezeigt.

$ bash unary.Sch

Hier ging es um die Verwendung eines numerischen Wertes, um den Vergleich durchzuführen. Führen wir unseren Code noch einmal aus, damit er auftritt. Also haben wir den Code noch einmal ausprobiert und auf dem Eingabefeld nach einem Wert zur Eingabe haben wir nichts eingegeben (ließen ihn leer gelassen) und die Taste „Eingabetaste“ gedrückt, um fortzufahren, um fortzufahren. Plötzlich gibt es uns den Fehler „Unary Operator erwartete“ Fehler in Zeile 3 des Codes. Danach wurde einfach die Meldung „Wert nicht übereinstimmt“ unter Verwendung des sonstigen Teils der im Code genannten Bedingung angezeigt.

$ bash unary.Sch

Obwohl wir auf den Fehler „Unary Operator erwartet“ am Ausgangsbereich im Terminal gestoßen sind, können wir den Hauptgrund für diesen Fehler nicht erkennen. Um den Hauptgrund für dieses Problem zu finden, müssen wir den Bash -Dateicode debuggen. Dafür müssen wir die Option "-xv" in der Bash-Anweisung verwenden, gefolgt vom Dateinamen beginnt mit. "/" wie gezeigt. Es wird jede Zeile unseres Codes debuggen und auch die Fehlerzeile anzeigen. Es zeigt, dass die Fehlerzeile "[-eq 14]" lautet. Es zeigt nicht das „$ v“, wie wir im Code angegeben haben. Der Grund für diesen Fehler ist, dass die Nutzung des Raums den Ausdruck der linken Seite macht, i, ich.e., "$ V", verschwindet aus dem Zustand.

$ bash -xv ./einstellig.Sch

Um zu verhindern, dass dieses Skript den Fehler „Unary Operator erwartet“ auf Bash wirft, müssen wir den Code noch einmal aktualisieren. Wir müssen die Doppelzitate um den linken Ausdruck „$ v“ hinzufügen, wie wir es im Bild unten getan haben. Der Rest des Codes ist vorerst unverändert. Jetzt ist der Code zur Verwendung bereit. Wir müssen es zuerst mit "Strg+S" speichern und die Datei mit "Strg+x" beenden.”

Nach der Ausführung der aktualisierten Bash -Datei mit der Bash -Abfrage hat der Benutzer erneut die Eingabetaste gedrückt, ohne einen Wert im Eingabefeld vor dem Text „Eingeben“ einzugeben. Jetzt wurde der erwartete Unary -Operator erwartete Fehler entfernt, aber ein weiterer Fehler “, erwartete Integer Expression“, ist entstanden. Es wird jedoch auch die Anzeigemeldung angezeigt, die der von einem Benutzer eingegebene Wert nicht mit der Nummer 14 übereinstimmt. Wir müssen also die Lösung für diesen Fehler herausfinden.

$ bash unary.Sch

Wie wir wissen, dass wir den Vergleichsbetreiber „-eq“ verwendet haben, um einige Werte mit der Ganzzahl 14 zu vergleichen. Es wird eine Ausnahme ausgelöst, da der Vergleichsoperator „-EQ“ nur für den Vergleich von Stringwerten oder Variablen entworfen und verwendet wird. Um die Anzahl der Ganzzahlen in Bash zu vergleichen, müssen wir den Zuweisungsoperator „=“ verwenden, um zu überprüfen, ob die beiden Werte gleich sind oder nicht. Sparen wir diesen aktualisierten Code, um das Ergebnis anzuzeigen.

Nach dieser aktualisierten Bash -Code -Ausführung hat der Benutzer erneut nichts eingegeben und einfach "Eingabetaste" gedrückt, um fortzufahren. Diesmal haben wir keine Fehler. Dies liegt an der Verwendung des "=" -Operators. Im Gegenzug wurde die Klausel "else" ausgeführt und eine "Wert nicht übereinstimmende" Nachricht angezeigt.

$ bash unary.Sch

Eine andere Möglichkeit, um zu vermeiden, dass der unary Operator erwartete Fehler in unserer Terminalhülle ist, besteht darin, die doppelten „quadratischen“ Klammern zu Beginn und am Ende der Bedingung „If“ zu verwenden, während der Vergleichsbetreiber „-EQ“ für jede Art von Wert verwendet wird. Also haben wir das wie unten gezeigt gemacht.

Nach dem Drücken von "Eingabetaste" erhält der Benutzer während der Ausführung keinen Fehler.

$ bash unary.Sch

Abschluss

Hier geht es um die Verwendung verschiedener Methoden zur Behebung des Bash -Fehlers „Unary Operator erwartet."Dabei sind wir auf einen anderen Fehler gestoßen," Integer Expression erwartet ", und wir haben ihn auch gelöst. Sie können das obige Beispiel ändern und Ihren Bash -Fehler beheben.