Как узнать, был ли скрипт успешно запущен в скрипте bash - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот код в моем скрипте:

check() {

    if [ $? -eq 0 ]
        then
    DATA=`date +%Y%m%d_%H.%M.%S`
        echo "O script $DATA Executou com sucesso" >>$log

        else
    DATA=`date +%Y%m%d_%H.%M.%S`
        echo "O script $DATA Executou com erro"; >>$log
        fi
    }

, но я хочу поместить его в другой скрипт, и когда я выполняю в crontab один раз каждые 15 минут. Я хочу проверить, успешно ли выполнен скрипт.

Мой вопрос находится в этом первом разделе if, как мне поставить скрипт ex3.sh, например

 if script ex3.sh sucess  
      then
            DATA=`date +%Y%m%d_%H.%M.%S`
                echo "O script $DATA Executou com sucesso" >>$log
     else
        DATA=`date +%Y%m%d_%H.%M.%S`
            echo "O script $DATA Executou com erro"; >>$log
            fi
        }

1 Ответ

2 голосов
/ 16 апреля 2020

Сначала к терминологии: то, что вы показываете в своем примере (check), это не скрипт, а функция. Он становится скриптом, если вы добавите фактический вызов к check.

Но к вашему правильному вопросу: вам нужно как-то определить для вызывающего абонента, успешны вы или нет. Это может быть сделано, если ваша функция вернет код завершения. Это делается с помощью оператора return. Соглашение состоит в том, что для возврата возвращается 0, а в случае ошибки - от 1 до 127.

Следовательно, если вы обнаружите ошибку, сделайте

return 1

в своем скрипте. Если все идет хорошо, выйдите из него по

return 0

Если вы придерживаетесь этого соглашения, вы действительно можете использовать выражение if, которое вы имели в виду:

if check ARGUMENTS
then
  .... # check function successful
else
  .... # check function not successful
fi

тот же принцип применим не только к функциям, но и к сценариям, с тем отличием, что с помощью сценариев вы сообщаете код выхода не с помощью return, а с помощью оператора exit, то есть

exit 0 # Success

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