Я пытаюсь получить код состояния из Rscript, запущенного неинтерактивным способом в виде bash-скрипта.Этот шаг является частью большого цикла обработки данных, который включает в себя сценарии db2, среди прочего.
Итак, у меня есть следующее содержимое в примере сценария .sh:
Rscript --verbose --no-restore --no-save /home/R/scripts/sample.r >> sample.rout
когда этот файл sample.sh запущен, он всегда возвращает код состояния 0, независимо от того, был ли сценарий sample.r запущен полностью или произошла ошибка на промежуточном этапе.
Я пробовал следующие вещи, но безуспешно
1 - в файле sample.sh я добавил условие if и else для кода возврата, подобного приведенному ниже, но он снова записал 0, несмотря на то, что sample.r не удалось выполнить в одной из функций внутри.
if Rscript --verbose --no-restore --no-save /home/R/scripts/sample.r >> sample.rout
then
echo -e "0"
else
echo -e "1"
fi
2 - я также пробовал скрипт-обертку, как в файле sample.wrapper.sh
r=0
a=$(./sample.sh)
r=$?
echo -e "\n return code of the script is: $a\n"
echo -e "\n The process completed with status: $r"
здесь также я не получил ожидаемое «1» в случае сбояsample.r на промежуточном этапе для обеих переменных a
и r
.В идеале я хотел бы получить способ зафиксировать ошибку (как '1') в a
.
Может кто-нибудь посоветует, как заставить rscript писать '0' только в случае завершения всего скриптабез каких-либо ошибок и «1» во всех других случаях?
очень ценим ввод!спасибо!