Как я могу проверить, получила ли моя функция Bash аргумент или нет?
-
11-10-2019 - |
Вопрос
Быстрый вопрос. Я люблю эмац. Я ненавижу печатать вещи, поэтому мне нравится использовать e
призывать Эмац.
Ранее у меня был мой .bash_profile (OS X) настроен как: alias e="emacs ."
. Анкет Тем не менее, я устал от того, чтобы все еще приходилось набирать emacs {файл}, когда я просто хотел отредактировать один файл.
Поэтому я пытался поднять это, от некоторого гугля, но Баш жалуется на []
:
###smart emacs, open file, or if none, dir
e()
{
if [$1]; then
emacs $1
else
emacs .
fi
}
Я хочу использовать это для: e something.c
или просто e
.
Решение
#!/bin/bash
###smart emacs, open file, or if none, dir
e()
{
if [[ -z "$1" ]]; then # if "$1" is empty
emacs .
else
emacs "$1"
fi
}
Другие советы
Пытаться
if [ $# -ge 1 ]; then
emacs "$@"
Я думаю, что Bash очень своеобразно в пространствах. Я даже удивлен, что вам разрешено пропустить пространство между именем функции и (). (Кроме того, использование $@ должно открыть все файлы, которые вы проходите.)
ETA: лучше проверить количество аргументов, в случае e "" foo.txt
...