Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Проверить наличие команды setserial

#linux #bash


Нужно проверить, что на компе работает команда setserial. 

Делаю так

setser=$(setserial -g /dev/ttyS[0-9] | grep -v unknown)
if $setser = '-sh: setserial: not found'
    then
        echo NOT AVAILABLE
    else
        echo OK
    fi


Выводит:

$ ./setser.sh
./setser.sh: line 1: setserial: not found
./setser.sh: line 11: =: not found
OK


Что не так?

В итоге пока нашел такой вариант

FILE=/usr/local/bin/setserial
if [ -f $FILE ]; then
   echo "Command Exists"
else
   echo "Command Does Not Exist"
fi

    


Ответы

Ответ 1



проверить доступность той или иной программы можно разными способами. например, можно воспользоваться описанной в стандарте posix встроенной командой оболочки command. например, так: if command -v setserial >/dev/null 2>&1 then echo "существует" else echo "не существует" fi

Ответ 2



./setser.sh: line 1: setserial: not found Прежде, чем пытаться выполнить утилиту setserial, можно проверить ее наличие в системе, это можно сделать разными способами. Например: setserial && echo "OK" Или так: command -v setserial && echo "OK" Или, если вы знаете путь, где находится утилита, можно сделать так: if test -f path/to/setserial; echo "OK"; fi if $setser = '-sh: setserial: not found' Для проверки условия, используйте утилиту test ([), например: if (test "$setser" = "some output"); then echo "OK"; fi .sh: line 1: setserial: not found Ну и, судя по номеру строки (line 1), вы забыли использовать shebang , например: #!/bin/sh

Ответ 3



В итоге так выкрутился FILE=/usr/local/bin/setserial if [ -f $FILE ]; then echo "Command Exists" else echo "Command Does Not Exist" fi

Комментариев нет:

Отправить комментарий