BASH: Übergeben von Argumenten an einen Alias: CANNOT USE A FUNCTION - Syntax von Bash-Bedingungen

Diese Frage unterscheidet sich darin, dass die klassische Antwort "Funktion verwenden" NICHT funktioniert. Das Hinzufügen einer Notiz zu einer vorhandenen Alias-Frage entspricht dem Senden einer Vorschlags-E-Mail an Yahoo.

Ich versuche, Makros zu schreiben, um die horrende IF-Syntax von BASH zu umgehen. Weißt du, das [, [[, ((... BASH: das PHP der Flusskontrolle ... füge einfach eine weitere Klammer hinzu. Ich warte immer noch auf das "(((((((()" - Formular. Nicht ganz sicher warum BASH "(" nicht erneut verwendet hat, da "(" bei der if-Anweisung keine echte Semantik hat.

Die Idee ist, Aliase für [, [[und ((benannt zu haben, da jede dieser abgedrehten Testfunktionen eine frustrierend andere Syntax hat. Ich kann mich ehrlich gesagt nie erinnern, welche welche ist (wie KÖNNTEN Sie das? Es ist völlig ad hoc! ) und viel Glück beim Versuch, "[[" zu googeln.

Ich würde dann die Namen als Mnemon und den Alias verwenden, um die völlig schrecklichen Unterschiede in den Abstandsanforderungen loszuwerden. Beispiele: "whatdoyoucallthisF" für "((", "shif" (für shell if), "mysterydoublesquarebacketif" für dieses schreckliche Ding, das anscheinend meistens dasselbe tut wie [, nur tut es nicht.

Also ichMUSS etwas von der Form haben:

alias IFREPLACEMENT = "if [\ $ @]; then"

Aber offensichtlich nicht \ $ @, was nur die aktuelle Argumentliste der Shell zementieren würde, die den Alias ausführt.

Funktionen werdennicht Arbeit in diesem Fall als die Funktion:

function IFREPLACEMENT {
    if [ $@ ]; then
}

ist illegal.

In CSH könnte man alias abc bla bla! *! 1 usw. sagen. Gibt es in BASH ALLES, was ähnlich ist (nein! * Funktioniert in BASH nicht)?

Oder bin ["Ich habe einfach Pech"]; ?

Nebenbei bemerkt, hier sind einige der frustrierenden Unterschiede, die testweise Funktionen in BASH betreffen, die ich zu vermeiden versuche, indem ich gut definierte Aliase verwende, die die Leute verwenden müssten, anstatt das falsche "[[", "[" oder "((":

"((" ist wirklich gruselig ... wenn eine Variable den Namen einer anderen Variablen enthält, wird sie für so viele Ebenen abgeleitet, wie nötig)"((" benötigt keine Leerzeichen wie '[' und '[['"((" benötigt "$18$quot; nicht, damit Variablen dereferenziert werden['s "-gt" ist numerisch oder sterben. [[scheint willkürliche Einschränkungen zu haben.'[' und '[[' verwenden ">" (etc) als LEXICAL-Vergleichsoperatoren, aber sie haben frustrierend unterschiedliche Regeln, die es so aussehen lassen, als würden sie numerische Vergleiche durchführen, wenn sie es wirklich nicht sind.Für eine Variable: a = "" (leerer Wert) ist [$ a == 123] ein Syntaxfehler, aber ((a == 123)) nicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage