Запустите команду в скрипте и проверьте возвращаемое значение - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь запустить команду diff в двух папках, проверить возвращаемое значение и затем вывести сообщение.

У меня есть это:

#!/bin/bash

result='diff dir1 dir2'

if result == 0
then
    echo "OK"
else
    echo "ERROR"
fi

Но я получаю result: command not found

Как мне выполнить команду и вернуть значение, которое нужно сравнить в IF

Ответы [ 3 ]

4 голосов
/ 04 мая 2020

Здесь довольно много проблем. Это пример, но вы должны провести дополнительные исследования в будущем.

#!/bin/bash

result="$(diff dir1 dir2)"
ret=$?
if [[ $ret -eq 0 ]]; then
then
    echo "OK"
else
    echo "ERROR"
fi
exit $ret
3 голосов
/ 04 мая 2020

Самый простой способ - проверить это напрямую:

#!/bin/bash

if diff dir1 dir2; then
    echo "OK"
else
    echo "ERROR"
fi

Если вы не хотите, чтобы diff что-либо печатал, используйте флаг -q.

0 голосов
/ 04 мая 2020

используйте вместо этого ${result}. Также обратите внимание на галочки в фактической команде

#!/bin/bash

result=`diff dir1 dir2`

if [[ -z ${result} ]]
then
    echo "OK"
else
    echo "ERROR"
fi
...