Если условие со строковым условием - PullRequest
0 голосов
/ 16 июня 2020

Объясняю свою проблему:

Эта команда;

data validate myfile.xml

должен дать мне такой ответ

myfile.xml is valid 

Затем я хочу создать if condition вот так:

if [[ ??? ]] ; then
        echo "correct myfile.xml , start analysis :"
        analysis myfile.xml myoutputfile.xml
else
        echo "uncorrect myfile.xml"
fi

Я бы хотел добавить в квадратные скобки что-то вроде этого:

 if [[ data validate myfile.xml == myfile.xml is valid  ]] ; then ...$

Но это не работает, какие идеи?

Пробовал:

if [["$(data validate myfile.xml)" == "my file.xml is valid " ]] ; then
> echo "Well done"
> else
> echo "Wrong"
> fi

Получил:

bash: [[myfile.xml is valid : command not found
Wrong

Ответы [ 3 ]

0 голосов
/ 16 июня 2020
analysis myfile.xml myoutputfile.xml

[[ -s myoutputfile.xml ]] && echo "My output file is valid." && exit 0
echo "Myfile.xml is invalid." && exit 1

Примечание о том, как это работает. Поскольку условие указано первым, оно сначала проверяется. Во второй строке нет оператора else, но он и не нужен, потому что он рассматривается как параметр по умолчанию; он будет выполняться автоматически, если тест не пройден.

0 голосов
/ 16 июня 2020

Я выполняю свою команду:

data validate myfile.xml

Сразу после этого я попробовал:

echo $?

Если он вернет мне 0, все в порядке, если он вернет мне 1 , это не правильно.

Итак:

data validate myfile.xml



   if [ "$?" -eq "0" ]
   then ....
0 голосов
/ 16 июня 2020

Вот так:

if xmllint --valid file.xml &>/dev/null; then
    echo 'valid xml'
else
    [...]
fi

Просто используя логическое логическое значение c

Замените на data, если эта последняя команда разработан для выхода> 0 в случае ошибки.

Пример:

xmllint --valid /etc/passwd &>/dev/null
echo $?

Код выхода: 1: error (failed: else case)

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