Come posso verificare se la mia funzione di Bash ha un argomento o no?
-
11-10-2019 - |
Domanda
Domanda veloce. Amo emacs. Odio digitando roba, però, così mi piace usare e
per invocare emacs.
In precedenza ho avuto il mio .bash_profile (OS X) configurato come: alias e="emacs ."
. Tuttavia, ero stanco di dover digitare ancora emacs {file} quando volevo solo modificare un file.
Così ho provato a montare questo in su, da un po 'googling, ma bash si lamenta il []
:
###smart emacs, open file, or if none, dir
e()
{
if [$1]; then
emacs $1
else
emacs .
fi
}
Voglio usare questo per fare:. e something.c
o, semplicemente e
Soluzione
#!/bin/bash
###smart emacs, open file, or if none, dir
e()
{
if [[ -z "$1" ]]; then # if "$1" is empty
emacs .
else
emacs "$1"
fi
}
Altri suggerimenti
Prova
if [ $# -ge 1 ]; then
emacs "$@"
Credo che bash è molto particolare sugli spazi. Sono anche sorpreso che si è permesso di omettere uno spazio tra il nome della funzione e (). (Inoltre, utilizzando $ @ dovrebbe aprire tutti i file si passa.)
ETA: migliore controllo contro numero di argomenti, in caso di e "" foo.txt
...