Как проверить, доступна ли команда scp? - PullRequest
3 голосов
/ 02 июня 2011

Я ищу многоплатформенное решение, которое позволило бы мне проверить, доступна ли команда scp.

Проблема в том, что scp не имеет командной строки --version и при вызове без параметров возвращается с кодом выхода 1 (ошибка).

Обновление: если неясно, под мультиплатформой я имею в виду решение, которое будет работать на Windows, OS X и Linux, не требуя от меня установки чего-либо.

Ответы [ 2 ]

5 голосов
/ 02 июня 2011

Используйте команду which scp.Он позволяет узнать, доступна ли команда, а также ее путь.Если scp недоступен, ничего не возвращается.

2 голосов
/ 02 июня 2011
#!/bin/sh

scp_path=`which scp || echo NOT_FOUND`

if test $scp_path != "NOT_FOUND"; then
        if test -x ${scp_path}; then
                echo "$scp_path is usable"
                exit 0
        fi
fi
echo "No usable scp found"

sh не имеет встроенной команды which, поэтому мы полагаемся на систему, которая предоставляет команду. Я не совсем уверен, нужна ли проверка -x - в моей системе, которая фактически проверяет, является ли найденный файл исполняемым пользователем, но это не может быть переносимым. В редком случае, когда система не имеет какой команды, здесь можно написать какую функцию.

...