¿Cómo puedo comprobar si mi función Bash tiene un argumento o no?
-
11-10-2019 - |
Pregunta
Una pregunta rápida. Me encanta emacs. No me gusta escribir cosas aunque, por lo que me gusta usar para invocar e
emacs.
Anteriormente tuve mi .bash_profile (OS X) configurado como: alias e="emacs ."
. Sin embargo, yo estaba cansado de tener que escribir todavía emacs {Archivo} cuando sólo quería editar un archivo.
Así que traté de azotar esto, a partir de algunas google, pero se queja de fiesta de la []
:
###smart emacs, open file, or if none, dir
e()
{
if [$1]; then
emacs $1
else
emacs .
fi
}
Quiero usar esto para hacer:. e something.c
o, simplemente e
Solución
Otros consejos
Trate
if [ $# -ge 1 ]; then
emacs "$@"
Creo que bash es muy peculiar acerca de los espacios. Incluso me sorprende que se le permite omitir un espacio entre el nombre y la función (). (Además, el uso $ @ debe abrir todos los archivos que pase.)
ETA: mejor control contra varios argumentos, en el caso de e "" foo.txt
...