definiere ein funktionsähnliches Makro in bash

7

Ist es möglich, eine Makrofunktion in bash zu definieren, wenn ich schreibe:

%Vor%

Bash führt dies aus:

%Vor%     
a-z 17.04.2012, 06:39
quelle

3 Antworten

14

Willkürliche Syntax kann nicht gemacht werden, um etwas zu tun. Klammern sind Metazeichen , die für den Parser eine besondere Bedeutung haben. Sie können also nicht als gültige Namen verwendet werden. Der beste Weg, um die Shell zu erweitern, ist das Definieren von Funktionen.

Dies wäre ein einfacher echo -Wrapper, der immer in dieselbe Datei schreibt:

%Vor%

Dies funktioniert ungefähr gleich, aber behandelt zusätzlich stdin - Opfern von echo's -e und -n Optionen:

%Vor%

Dies kann als

bezeichnet werden %Vor%

oder

%Vor%

Funktionen werden wie alle anderen Befehle übergeben.

Der zweite echoähnliche Wrapper testet zuerst entweder auf ein erstes Argument setzen oder auf stdin, das von einem Nicht-Tty stammt und ruft printf unter Verwendung der Positionsparameter, falls gesetzt, oder stdin auf. Der Testausdruck vermeidet den Fall von Null-Argumenten und keine Umleitung von einer Datei. In diesem Fall würde Bash versuchen, die Ausgabe des Terminals zu erweitern, indem er die Shell aufhängt.

    
ormaaj 17.04.2012, 06:45
quelle
4
%Vor%

Sie verwenden beim Aufruf keine Klammern. So nennst du es:

%Vor%     
Emil Vikström 17.04.2012 06:42
quelle
3

Ja, nur Sie sollten es mit F sth aufrufen:

%Vor%

Lesen Sie mehr hier .

    
yazu 17.04.2012 06:43
quelle

Tags und Links