Willkürliche Syntax kann nicht dazu gebracht werden, irgendetwas zu tun. Klammern sind Metazeichen die eine besondere Bedeutung für den Parser haben, also gibt es keine Möglichkeit, sie als gültige Namen zu verwenden . Der beste Weg, die Shell zu erweitern, besteht darin, Funktionen zu definieren.
Dies wäre ein einfaches echo
Wrapper, der immer in dieselbe Datei schreibt:
f() {
echo "[email protected]"
} >a.txt
Dies macht ungefähr das Gleiche, behandelt aber zusätzlich stdin - wodurch echo's
geopfert wird -e
und -n
Optionen:
f() {
[[ ${1+_} || ! -t 0 ]] && printf '%s\n' "${*-$(</dev/fd/0)}"
} >a.txt
Was aufgerufen werden kann als
f arg1 arg2...
oder
f <file
An Funktionen werden Argumente genauso übergeben wie an alle anderen Befehle.
Der zweite Echo-ähnliche Wrapper testet zuerst entweder auf ein Set-First-Argument oder auf stdin, das von einem Nicht-TTY kommt, und ruft bedingt printf auf, indem er entweder die Positionsparameter if set oder stdin verwendet. Der Testausdruck vermeidet den Fall von Null-Argumenten und keiner Umleitung von einer Datei, in diesem Fall würde Bash versuchen, die Ausgabe des Terminals zu erweitern und die Shell aufzuhängen.
Ja, nur Sie sollten es mit F sth
aufrufen :
F()
{
echo "$1" > a.txt
}
Lesen Sie hier mehr.
F () {
echo "$1" > a.txt
}
Sie verwenden keine Klammern, wenn Sie es aufrufen. So nennen Sie es:
F "text to save"