Comment puis-je vérifier si ma fonction Bash a un argument ou non?
-
11-10-2019 - |
Question
Question rapide. J'adore emacs. Je déteste taper des choses, donc je tiens à utiliser e
d'invoquer emacs.
Auparavant, j'avais mon .bash_profile (OS X) configuré comme: alias e="emacs ."
. Cependant, j'étais fatigué d'avoir toujours à taper emacs {fichier} quand je voulais éditer un fichier.
J'ai donc essayé de fouetter tout ça, de quelques googler, mais bash se plaint du []
:
###smart emacs, open file, or if none, dir
e()
{
if [$1]; then
emacs $1
else
emacs .
fi
}
Je veux l'utiliser pour faire:. e something.c
ou, juste e
La solution
#!/bin/bash
###smart emacs, open file, or if none, dir
e()
{
if [[ -z "$1" ]]; then # if "$1" is empty
emacs .
else
emacs "$1"
fi
}
Autres conseils
Essayez
if [ $# -ge 1 ]; then
emacs "$@"
Je pense que bash est très particulière sur les espaces. Je suis même surpris que vous êtes autorisé à omettre un espace entre le nom de la fonction et (). (Aussi, en utilisant $ @ devrait ouvrir tous les fichiers que vous passez.)
ETA: meilleur contrôle par rapport au nombre d'arguments, en cas de e "" foo.txt
...