Wie kann ich überprüfen, ob meine Bash-Funktion ein Argument oder nicht bekam?
-
11-10-2019 - |
Frage
Kurze Frage. Ich liebe Emacs. Ich hasse es wenn Sachen eingeben, so dass ich wie zu verwenden e
aufzurufen Emacs.
Bisher hatte ich meine Bash_profile (OS X) konfiguriert als: alias e="emacs ."
. Aber ich war müde von immer noch Emacs eingeben zu müssen {file}, wenn ich will nur bearbeiten eine Datei.
Also habe ich versucht, diese bis zu peitschen, von einigen googeln, aber bash über die []
beschwert:
###smart emacs, open file, or if none, dir
e()
{
if [$1]; then
emacs $1
else
emacs .
fi
}
Das möchte ich nutzen, um zu tun. e something.c
oder nur e
Lösung
#!/bin/bash
###smart emacs, open file, or if none, dir
e()
{
if [[ -z "$1" ]]; then # if "$1" is empty
emacs .
else
emacs "$1"
fi
}
Andere Tipps
Versuchen
if [ $# -ge 1 ]; then
emacs "$@"
Ich denke, bash über Räume sehr eigentümlich ist. Ich bin selbst überrascht sind Sie erlauben einen Raum zwischen Funktionsnamen und () zu verzichten. (Auch $ mit @ sollten alle Dateien öffnen Sie weitergeben.)
ETA: bessere Kontrolle gegen Anzahl von Argumenten, bei e "" foo.txt
...