Что должно быть в тесте, так это имя переменной, имя тега, если хотите. Чтобы проверить переменную a, вы делаете не do `[[-v $ a]], вы делаете:
[[ -v a ]]
Однако нет способа (AFAIK) проверить позиционные параметры с помощью - v
потому что, по сути, позиционные параметры не имеют имени. Или, если хотите, это числа, а с числом тест не работает.
Итак, вам нужно протестировать var напрямую, без помощи -v
, как это:
[[ ${1:+present} ]]
Также:
Вы должны процитировать свои расширения var.
Я предпочитаю использовать $ HOME вместо тильды. Это позволяет строки в кавычках.
abash() {
if [[ ${1:+present} ]]
then
atom "$HOME/Shell/$1.sh"
else
atom "$HOME/.bashrc"
fi
}
Ответ похож на этот , но обратите внимание на :
, которые я добавил, чтобы он работал правильно.