Как я могу проверить, существует ли программа в скрипте рыбы?
Я знаю, что с Bash не существует абсолютного решения, но использование if type PROGRAM >/dev/null 2>&1; then...
дало хорошие результаты.
Есть что-то подобное с рыбой?
Как я могу проверить, существует ли программа в скрипте рыбы?
Я знаю, что с Bash не существует абсолютного решения, но использование if type PROGRAM >/dev/null 2>&1; then...
дало хорошие результаты.
Есть что-то подобное с рыбой?
Есть type -q
, как в
if type -q $program
# do stuff
end
который возвращает 0, если что-то является функцией, встроенной или внешней программой (т.е. если это что-то, что будет выполнять рыба).
Также есть command -sq
, который вернет 0, только если это внешняя программа.
Для обоих из них флаг «-q» заглушает весь вывод. Для команды "-s" заставляет просто искать команду, а не выполнять ее напрямую.
if type -q tldr; and type -q peco; tldr $argv | peco; end;
Или есть способ лучше? Может быть, сделать все за один раз, например. type -q tldr peco
(в документации говорится, что мы можем указать несколько имен для type
, но это не дает сбоя, когда я пытаюсь вернуть истину, например, type -q aaa bbb; and echo true
он ничего не печатает, как ожидалось, но if type -q aaa bbb; echo true; end
печатает true
. Так в чем дело?
- person user14492; 16.07.2021
type -q
возвращает истину, если существует хотя бы один из аргументов - type -q type slartibartfast
будет успешным везде, потому что type
всегда существует. Так что да, вам придется проверять отдельно.
- person faho; 16.07.2021