Verstehen Sie zun?chst, wann Sie Leerzeichen in der Bash verwenden sollten und wann nicht.
1. Auf beiden Seiten der Gleichheitszeichenzuweisung dürfen keine Leerzeichen stehen.
2. Zwischen Befehlen und Optionen sind Leerzeichen erforderlich.
3 sind optional
Werfen wir einen Blick auf h?ufige Probleme
1. Bei der Zuweisung gibt es zus?tzliche Leerzeichen auf beiden Seiten des Gleichheitszeichens oder nur auf der linken Seite
test@pythontab. com ~ $ var1 = test
bash: var1: Befehl nicht gefunden
test@pythontab.com ~ $ echo ${var1:?error}
bash: var1: error
test@pythontab.com ~ $ echo ${var1?error}
bash: var1: error
test@pythontab.com ~ $ var2 =test
bash: var2: Befehl nicht gefunden
test@pythontab.com ~ $ echo ${var2:?error}
bash: var2: error
test@pythontab.com ~ $ echo ${var2?error}
bash: var2: error
Hier habe ich verwendet Bash-Variablenerweiterung, ${var1:?error}, wenn var1 nicht gesetzt oder null (undefiniert oder leer) ist, wird der angegebene Fehler gemeldet. ${var1?error}Wenn var1 nicht gesetzt ist, wird der angegebene Fehler gemeldet. Den Ausführungsergebnissen nach zu urteilen: Wenn auf der linken Seite des Gleichheitszeichens ein Leerzeichen steht, wird der Variablenname als Befehl ausgeführt und das Ergebnis ist ?Befehl nicht gefunden“ und der Variablen wird kein Wert
2. Beim Zuweisen eines Werts ist auf der linken Seite des Gleichheitszeichens kein Leerzeichen und auf der rechten Seite ein Leerzeichen (Diese Situation ist etwas speziell, Sie werden zwei Situationen finden)
test@pythontab .com ~ $ var= test
test@pythontab.com ~ $ var= nocmd
bash: nocmd: Befehl nicht gefunden
Rechts neben dem Gleichheitszeichen befindet sich auch ein Leerzeichen Der erste Befehl meldet keinen Fehler, der zweite Befehl jedoch.
Das liegt daran, dass es eine solche M?glichkeit gibt, Befehle in der Shell auszuführen: var=string command
Der Befehl command erh?lt den Wert der Variablen var (ob der Wert der Variable var wird nach der Ausführung des Befehls beibehalten. Sie wird in bash4 beibehalten, aber sie wurde beibehalten, als ich sie in Dash fand. Da test ein Befehl ist und nocmd nicht, habe ich berichtet Befehl nicht gefunden.
test@ pythontab.com ~ $ var=newtest eval echo $var
newtest
test@pythontab.com ~ $ echo $var
Hinweis: Ich habe hier eval verwendet Um den ersten Fehler zu vermeiden, wird beim Parsen $var durch eine leere Zeichenfolge ersetzt. Andernfalls tritt die folgende Situation auf (das Folgende ist die falsche Testmethode. Bevor Echo ausgeführt wird, wurde $var durch eine leere Zeichenfolge ersetzt) ??
Code wie folgt:
test@pythontab.com ~ $ var=newtest echo $var
test@pythontab.com ~ $ echo $var
An diesem Punkt glaube ich, dass es jeder versteht Für das Gleichheitszeichen dürfen auf der linken und rechten Seite keine Leerzeichen stehen, aber das ist definitiv nicht das gewünschte Ergebnis.
3. Zwischen dem Befehl und der Option muss ein Leerzeichen stehen
Jeder scheint das zu verstehen, warum bin ich immer noch so wortreich? Apropos, ich muss einen ganz besonderen Befehl erw?hnen: [Befehl (Sie haben richtig gelesen, es ist [), das ist der Testbefehl (natürlich ist dies in Bash ein integrierter Befehl, aber er hat keine Auswirkungen
unser Verst?ndnis). Vielleicht kommt Ihnen der [Befehl bekannt vor, ja, ich garantiere Ihnen, dass Sie ihn gesehen haben, schauen Sie sich das folgende Beispiel an
test@pythontab.com ~ $ if [ "abc" = "abc" ]; 'sie sind gleich'; fi
sie sind gleich
test@pythontab.com ~ $ type -a [
[ ist eine eingebaute Shell
[ ist /usr/bin/[
Erinnern Sie sich? [Befehle werden oft in if-Urteilen verwendet. Natürlich schreiben manche Leute gerne so:
test@pythontab.com ~ $ [ "abc" = "cba" ] || >sie sind nicht gleich
test@pythontab.com ~ $ type -a [
[ ist eine eingebaute Shell
[ ist /usr/bin/[
[ Der Befehl wird aufgerufen Testbefehl, beide sind fast gleich, warum also nicht genau gleich? Werfen wir einen Blick darauf
test@pythontab.com ~ $ [ "abc" = "cba"
bash: [: fehlendes `]'
test@pythontab.com ~ $ [ "abc" = "cba " ]
test@pythontab.com ~ $ test "abc" = "cba" ]
bash: test: zu viele Argumente
test@pythontab.com ~ $ test "abc" = "cba ?
Um es klarzustellen: Wenn Sie den [Befehl, müssen Sie ihm einen Schwanz geben] verwenden, k?nnen Sie bei Verwendung des Testbefehls keinen Schwanz hinzufügen. Tail] ist [der letzte Parameter, ein unverzichtbarer Parameter, der das Ende des Befehls darstellt
So viel ist gesagt, was hat das mit Leerzeichen zu tun? Um es allen verst?ndlich zu machen, m?chte ich zun?chst Folgendes sagen: [Es handelt sich um einen Befehl in der Shell, und um ihn herum müssen Leerzeichen stehen! ] ist der letzte unverzichtbare Parameter von [, der ebenfalls Leerzeichen auf beiden Seiten erfordert (obwohl die Parameter einiger Befehle miteinander verbunden werden k?nnen, wie z. B. ps, der Befehl [ jedoch nicht, es müssen Leerzeichen zwischen seinen Parametern stehen). Werfen wir einen Blick auf [h?ufige Fehler
a. Fehlendes Leerzeichen zwischen if und [
test@pythontab.com ~ $ if[ "$HOME" = "/home/igi"];then echo ' equal'; fi
bash: Syntaxfehler bei unerwartetem Token `then'
test@pythontab.com ~ $ if[ "$HOME" = "/home/igi" ];then echo 'equal'; ??>bash: Syntaxfehler bei unerwartetem Token `then'
test@pythontab.com ~ $ if["$HOME" = "/home/igi"];then echo 'equal'; fi
bash : syntax Fehler in der N?he des unerwarteten Tokens `then'
test@pythontab.com ~ $ if["$HOME" = "/home/igi" ];then echo 'equal'; fi
bash: Syntaxfehler in der N?he des unerwarteten Tokens ` dann'
Syntaxanalysefehler, offensichtlich, wenn[ Für Bash wei? ich nicht, was zum Teufel ist
b Es fehlt ein Leerzeichen zwischen [ und den folgenden Parametern
test@pythontab.com ~ $ if [" $HOME" = "/home/igi" ];then echo 'equal'; fi
bash: [/home/igi: Keine solche Datei oder kein solches Verzeichnis
test@pythontab.com ~ $ if [ "$HOME" = "/home/igi"];dann echo 'equal'; fi
bash: [/home/igi: Keine solche Datei oder kein solches Verzeichnis
["$HOME" Für bash, Ich wei? auch nicht, was zum Teufel es ist
c Es gibt einen Platzmangel zwischen den Parametern zwischen [ ]
test@pythontab.com ~ $ if [ "abc"="abc" ] ; then echo 'equal' ; fi
equal
test@pythontab.com ~ $ if [ "abc"="cba" ]; then echo 'equal'; Der erste Befehl scheint richtig zu sein (eigentlich ist es nur ein Zufall). Schauen Sie sich den zweiten Befehl an. ?abc“ und ?cba“ sind offensichtlich unterschiedlich, werden aber als gleich beurteilt. Dies liegt daran, dass zwischen den Parametern kein Platz vorhanden ist und der Befehl [den internen Wert nur als Wert betrachtet. Werfen Sie einen Blick auf den folgenden Befehl und Sie werden erleichtert sein
test@pythontab.com ~ $ if [ 0 ], then echo 'equal'; "1" ]; then echo 'equal'; fi
equal
test@pythontab.com ~ $ if [ "" ]; then echo 'equal'; [ ] ; then echo 'equal'; fi
Wenn es in [ ] nur einen Wert gibt (die aufgrund fehlender Leerzeichen werden auch gez?hlt), ist es wahr, wenn es sich nicht um eine leere Zeichenfolge handelt . Daher müssen die Parameter zwischen [ ] auch Leerzeichen auf beiden Seiten haben und k?nnen nicht übereinander gestapelt werden
d Es fehlt an Leerzeichen zwischen Parametern und Ende]
Dies wird nicht wortreich sein , tail] Es ist auch der Parameter von [Befehl. Wie oben erw?hnt, müssen zwischen Parametern Leerzeichen stehen
Es wird so viel über [Befehl und Leerzeichen] gesprochen, aber manchmal kann es auch ohne Leerzeichen korrekt ausgeführt werden. Das sind natürlich nur Sie. Viel Glück, werfen wir einen Blick darauf
test@pythontab.com ~ $ var=' abc'
test@pythontab.com ~ $ if [$var = "abc" ]; then echo 'equal'; fi
equal
test@pythontab.com ~ $ if ["$var" = "abc" ];then echo 'equal'; fi
bash: [ abc: command not gefunden
double Was in Anführungszeichen eingeschlossen ist, ist ein Ganzes, und wenn keine doppelten Anführungszeichen vorhanden sind, werden die Leerzeichen oder Tabulatoren vor und nach der Zeichenfolge abgeschnitten. Wenn Sie darauf sto?en oder absichtlich Leerzeichen oder Tabulatoren vor und nach der Zeichenfolge verwerfen m?chten, ist dies nicht unm?glich, es wird jedoch dringend davon abgeraten, dies zu schreiben, da Ihr Code dadurch sehr fragil wird.
Oder Sie haben alle Leerzeichen hinzugefügt, die Sie hinzufügen sollten, erhalten aber immer noch eine Fehlermeldung. Dies kann auch daran liegen, dass doppelte Anführungszeichen fehlen. Diese Situation kommt sehr h?ufig vor. Werfen Sie schlie?lich einen Blick auf
test@pythontab.com ~ $ var=''
test@pythontab.com ~ $ if [ "$var" = "abc" ];then echo 'equal'; fi
test@pythontab.com ~ $ if [ $var = "abc" ];then echo 'equal'; fi
bash: [: =: un?rer Operator erwartet
test@pythontab .com ~ $ dvar='a b c'
test@pythontab.com ~ $ if [ $dvar = "a b c" ];then echo 'equal'; fi
bash: [: too much arguments
test@ pythontab.com ~ $ if [ "$dvar" = "a b c" ];then echo 'equal'; fi
equal
Ich werde mich noch einmal ausführlich ?u?ern, lassen Sie die doppelten Anführungszeichen nicht weg leicht. Ist es klar? Wenn Sie es immer noch nicht verstehen,
Abschlie?end werde ich keinen Unsinn über die optionalen Leerzeichen auf beiden Seiten des Rohrs reden, denn ich habe niemanden getroffen, der daran Zweifel hat.

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Open Shell, das unter Windows 11 nicht l?uft, ist kein neues Problem und plagt Benutzer seit der Einführung dieses neuen Betriebssystems. Die Ursache für das Problem, dass Open-Shell Windows 11 nicht funktioniert, ist nicht spezifisch. Dies kann durch unerwartete Fehler in Programmen, das Vorhandensein von Viren oder Malware oder besch?digte Systemdateien verursacht werden. Für diejenigen, die es nicht wissen: Open-Shell ist der Ersatz für Classic Shell, das 2017 eingestellt wurde. Sie k?nnen sich unser Tutorial zur Installation von Classic Shell unter Windows 11 ansehen. So ersetzen Sie das Startmenü von Windows 11

<p>Die Anpassung Ihres Betriebssystems ist eine gro?artige M?glichkeit, Ihren Alltag angenehmer zu gestalten. Sie k?nnen die Benutzeroberfl?che ?ndern, benutzerdefinierte Designs anwenden, Widgets hinzufügen und mehr. Deshalb zeigen wir Ihnen heute, wie Sie ClassicShell unter Windows 11 installieren. </p><p>Dieses Programm gibt es schon seit langer Zeit und erm?glicht es Ihnen, das Betriebssystem zu ?ndern. Mittlerweile haben Freiwillige die Leitung der Organisation übernommen, die sich 2017 aufl?ste. Das neue Projekt hei?t OpenShell und ist derzeit für Interessierte auf Github verfügbar. </p>&a

Wird beim Ausführen des Skripts in PowerShell die Fehlermeldung ?Add-AppxPackage: Bereitstellung fehlgeschlagen mit HRESULT: 0x80073D02, Das Paket kann nicht installiert werden, da die von ihm ge?nderte Ressource derzeit verwendet wird. Fehler 0x80073D02...“ angezeigt? Wie in der Fehlermeldung angegeben, tritt dies auf, wenn der Benutzer versucht, eine oder alle WindowsShellExperienceHost-Anwendungen erneut zu registrieren, w?hrend der vorherige Prozess ausgeführt wird. Wir haben einige einfache L?sungen, um dieses Problem schnell zu beheben. Fix 1 – Beenden Sie den Experience-Host-Prozess, den Sie beenden müssen, bevor Sie den Powershell-Befehl ausführen

Windows-Subsystem für Linux Die erste Option ist die Verwendung des Windows-Subsystems für Linux oder WSL, einer Kompatibilit?tsschicht für die native Ausführung bin?rer ausführbarer Linux-Dateien auf Windows-Systemen. Es funktioniert für die meisten Szenarien und erm?glicht Ihnen die Ausführung von Shell-Skripten in Windows 11/10. WSL ist nicht automatisch verfügbar, daher müssen Sie es über die Entwicklereinstellungen Ihres Windows-Ger?ts aktivieren. Sie k?nnen dies tun, indem Sie zu Einstellungen > Update & Sicherheit > Für Entwickler gehen. Wechseln Sie in den Entwicklermodus und best?tigen Sie die Abfrage mit Ja. Suchen Sie als n?chstes nach W

OpenShell ist ein kostenloses Software-Dienstprogramm, mit dem Sie das Startmenü von Windows 11 so anpassen k?nnen, dass es einem Menü im klassischen Stil oder einem Menü im Windows 7-Stil ?hnelt. Das Startmenü früherer Windows-Versionen bot Benutzern eine einfache M?glichkeit, den Inhalt ihres Systems zu durchsuchen. Im Grunde ist OpenShell ein Ersatz für ClassicShell, der verschiedene Benutzeroberfl?chenelemente bereitstellt, die dabei helfen, die Funktionalit?t der letzteren Version aus früheren Windows-Versionen zu übernehmen. Nachdem die Entwicklung von ClassicShell im Jahr 2017 eingestellt wurde, wurde es von GitHub-Freiwilligen unter dem Namen OpenShell gepflegt und weiterentwickelt. Es h?ngt mit Win zusammen
![Explorer.exe startet beim Systemstart nicht [Fix]](https://img.php.cn/upload/article/000/887/227/168575230155539.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Heutzutage sto?en viele Windows-Benutzer auf schwerwiegende Windows-Systemprobleme. Das Problem besteht darin, dass Explorer.exe nach dem Laden des Systems nicht gestartet werden kann und Benutzer keine Dateien oder Ordner ?ffnen k?nnen. Allerdings k?nnen Windows-Benutzer in einigen F?llen den Windows Explorer manuell über die Eingabeaufforderung ?ffnen und müssen dies bei jedem Systemneustart oder nach dem Systemstart tun. Dies kann problematisch sein und ist auf die folgenden Faktoren zurückzuführen. Besch?digte Systemdateien. Aktivieren Sie die Schnellstarteinstellungen. Veraltete oder problematische Anzeigetreiber. An einigen Diensten im System wurden ?nderungen vorgenommen. Ge?nderte Registrierungsdatei. Unter Berücksichtigung aller oben genannten Faktoren haben wir einige gefunden, die den Benutzern sicherlich helfen werden

Einige Beispiele für Python-Skripte: Unternehmens-WeChat-Alarme, FTP-Clients, SSH-Clients, Saltstack-Clients, vCenter-Clients, Abrufen der Ablaufzeit des SSL-Zertifikats für Dom?nennamen, Senden der heutigen Wettervorhersage und zukünftiger Wettertrenddiagramme: SVN-Vollsicherung; Zabbix überwacht den Ablauf des Benutzerkennworts, erstellt lokales YUM und die Anforderungen der Leser im vorherigen Artikel (wenn die Auslastung hoch ist, finden Sie heraus, welche Prozessskripte eine relativ hohe Auslastung belegen und Benachrichtigungen speichern oder pushen). Bitte haben Sie etwas Geduld. Am Ende des Artikels gibt es doch noch ein Easter Egg. Python-Skript ist Teil des WeChat-Alarms für Unternehmen. Dieses Skript verwendet die WeChat-Anwendung des Unternehmens, um einen WeChat-Alarm durchzuführen, und kann verwendet werden

Bei der Verarbeitung von Dateien unter Linux-Systemen ist es manchmal erforderlich, Zeilen am Ende der Datei zu l?schen. Dieser Vorgang kommt in praktischen Anwendungen sehr h?ufig vor und kann durch einige einfache Befehle erreicht werden. In diesem Artikel werden die Schritte zum schnellen L?schen der Zeile am Ende der Datei im Linux-System vorgestellt und spezifische Codebeispiele bereitgestellt. Schritt 1: überprüfen Sie die letzte Zeile der Datei. Bevor Sie den L?schvorgang durchführen, müssen Sie zun?chst best?tigen, welche Zeile die letzte Zeile der Datei ist. Sie k?nnen den Befehl tail verwenden, um die letzte Zeile der Datei anzuzeigen. Der spezifische Befehl lautet wie folgt: tail-n1filena
