#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
Комментариев нет:
Отправить комментарий