2015-04-20 8 views
2

Я пытаюсь создать небольшой скрипт, который проверяет, установлена ​​ли программа. Я пытаюсь с tmux, ...Bash, ... проверьте, установлена ​​ли программа или нет, используя скрипт bash

`tmux --help` | grep "tmux: command not found" &> /dev/null 
if [ $? == 1 ]; then 
    echo "tmux is not installed" 
    exit 
fi 

После установки tmux, я получаю:

usage: tmux [-2lquvV] [-c shell-command] [-f file] [-L socket-name] 
      [-S socket-path] [command [flags]] 
tmux is not installed 

Если программа не установлена, appair строка "tmux: команда не найдена". Это могло бы объяснить, почему я grep вывод команды tmux --help. Правильно ли проверить, установлен ли tmux или нет?

Сценарий alwais echo «tmux не установлен». Даже если я устанавливаю tmux. Что с этим не так?

+1

Вы не хотите, чтобы обратные элементы вокруг 'tmux -help' выполняли' tmux -help', а затем пытались выполнить возвращенную строку справки в качестве команды. –

+0

Lol. Вы совершенно правы – sensorario

ответ

3

Вы можете использовать command, type и hash встроенные функции, чтобы проверить, может ли данная команда использоваться в текущем сеансе оболочки.

Это не означает, что оно доступно в некотором месте, но не в текущем PATH.

Вы должны избегать использования which для этой цели (несмотря на то, что это предложение по умолчанию, вы получите от многих людей), потому что это не стандартизированный инструмент (не полностью), и это внешнего инструмента по сравнению с выше, которые все встроены в оболочку (и, следовательно, дороже проверки).

Смежные вопросы