псевдоним - открыть против кода рабочей области, если файл существует - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь открыть рабочее пространство, если файл рабочего пространства существует, из псевдонима:

Это не работает, когда вызывается из псевдонима "co"

alias co=[ -f $(basename $(PWD)).code-workspace ] && code $(basename $(PWD)).code-workspace || code .

Но это работает с терминала:

[ -f $(basename $(PWD)).code-workspace ] && code $(basename $(PWD)).code-workspace || code .

Ты знаешь почему?

1 Ответ

0 голосов
/ 17 июня 2019

Строка должна быть заключена в кавычки.

alias co='[ -f $(basename $(PWD)).code-workspace ] && code $(basename $(PWD)).code-workspace || code .'

Однако, функция намного лучше. Не нужно втискивать все в одну строчку.

co() {
    if [ -f "$(basename "$PWD")".code-workspace ]; then
        code "$(basename "$PWD")".code-workspace
    else
        code .
    fi
}

Лучше всего использовать if / else, а не && и ||. Руководство Грега по Bash говорит:

Использование условных операторов легко и кратко, если мы хотим сделать простую проверку ошибок. Однако все становится немного опаснее, когда мы хотим запустить несколько операторов, если условие выполняется или если нам нужно оценить несколько условий.

...

В общем, не хорошая идея объединить несколько различных управляющих операторов в одну команду. && и || довольно полезны в простых случаях, но не в сложных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...