Как я могу проверить, находится ли ldconfig в PATH, используя bash? - PullRequest
0 голосов
/ 20 сентября 2011

Я удалил фрагмент perl из Интернета для использования в моем скрипте bash, и по слишком долгим причинам, было бы лучше, если бы я смог добиться того, что он пытается сделать непосредственно в bash.

Вот сценарий:

bash stuff
...
perl <<'EOF'

use 5.006;
use strict;
use warnings;

if (! can_run("ldconfig")) {
    die "you need to have ldconfig in your PATH env to proceed.\n";
}

# check if we can run some command
sub can_run {
    my ($cmd) = @_;

    #warn "can run: @_\n";
    my $_cmd = $cmd;
    return $_cmd if -x $_cmd;

    return undef;

EOF
more bash stuff

По сути, вопрос можно перефразировать следующим образом: «Как я могу проверить, находится ли ldconfig в окружении PATH с использованием bash?»

Ответы [ 3 ]

5 голосов
/ 20 сентября 2011

Вы хотите встроенную команду bash type:

if type -P ldconfig; then
  echo "ldconfig is in the PATH"
else
  echo "ldconfig is not in the PATH"
fi

Выражается отрицательно:

if ! type -P ldconfig; then
  echo "ldconfig is not in the PATH"
fi
3 голосов
/ 20 сентября 2011

Более простым решением было бы вызвать оболочку и команду which:

$path = `which ldconfig`;

if ($path) {
  ...
}

Если ldconfig распознан, будет возвращен путь к его исполняемому файлу, в противном случае пустой вывод.

Или, если этот Perl-скрипт не собирается делать ничего, кроме этого, вы можете отклонить его и выполнить ту же команду из bash.

0 голосов
/ 21 сентября 2011

Я уточнил ответ @glenn jackman, чтобы сделать его "тихим".Он работал как есть, но выводил "/ sbin / ldconfig" на экран в дополнение к эхо-сигналу в пути.В этой модификации выводится только эхо:

type ldconfig &>/dev/null

if [ "$?" -eq 0 ]
then
  echo "ldconfig is in the PATH"
else
  echo "ldconfig is not in the PATH"
fi

Спасибо всем.

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