Heim > php教程 > PHP开发 > Lösung für das Problem mit zu vielen Argumenten in der Linux-Bash

Lösung für das Problem mit zu vielen Argumenten in der Linux-Bash

高洛峰
Freigeben: 2017-01-04 17:23:47
Original
2080 Leute haben es durchsucht

Um festzustellen, ob der Inhalt einer Datei leer ist, verwenden Sie die Anweisung:

if test -z `cat filename`

Wenn der Dateiname leer ist oder nur eine Zeichenfolge ohne enthält Leerzeichen, alles ist normal, andernfalls werden Fehler wie „zu viele Argumente“ oder sogar „Binäroperator erwartet“ gemeldet.

Ursachenanalyse:
Die Leerzeichen und Wagenrückläufe im Dateinamen verwirren Bash.
Wenn die Umgebungsvariable nicht in doppelte Anführungszeichen gesetzt wird, geht Bash davon aus, dass die Bedingung zu viele unabhängige Variablen enthält.

Sie können dieses Problem beseitigen, indem Sie das Zeichenfolgenargument in doppelte Anführungszeichen setzen.

Es scheint, dass viele ähnliche Programmierfehler vermieden werden, wenn man sich angewöhnt, alle String-Argumente in doppelte Anführungszeichen zu setzen.

Lösung:

Fügen Sie einfach doppelte Anführungszeichen zum Befehlsausführungsteil hinzu:

if test -z "`cat filename`"
Nach dem Login kopieren

Lösung 2 für die zu vielen Argumente der Shell:

Heute habe ich Gelegentlich ist ein seltsames Problem aufgetreten, um ein kleines Problem zu lösen. Die Zusammenfassung lautet wie folgt: Wenn [ -z ` lsof -i: 22 ` ] //Diese Schreibweise wird zu viele Argumente melden, ändern Sie es in [[ -z ` lsof -i:22 ` ]]

                                                                                                                                                                                                                                                   🎜> Sonst Echo „Der Port läuft“

Fi

Wenn dieses einfache Shell-Skript ausgeführt wird, meldet es immer ZU VIELE ARGUMENTE. Einfach ausgedrückt: „[[ ]]“ ist vielseitiger als „[ ]“. Um dieses Problem zu vermeiden, ersetzen Sie einfach „. [ ]" mit "[[ ]]" . Darüber hinaus ist „[[ ]]“ fehlertoleranter als „[ ]“, d. h. Fehler, die in „[ ]“ gemeldet werden können, werden möglicherweise nicht in „[[ ]]-Strukturen wie &&, || gemeldet usw. Diese Art der logischen Beurteilung steht nicht im Mittelpunkt dieses Artikels, daher werde ich sie kurz erwähnen.

Weitere verwandte Artikel zur Lösung des Problems zu vieler Argumente in Linux Bash finden Sie hier zur chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage