Вот ситуация:
У меня есть сценарий оболочки - script.ksh
Я звоню из Java-программы, и мне нужен стандартный вывод из сценария в Java-программе.
Мне также нужно перенаправить вывод в файл, и если в какой-то момент сценарий завершится ошибкой, я должен отправить письмо с прикрепленным к нему файлом.
, поэтому файл должен быть закрытдо выхода из сценария, чтобы почтовая программа могла его отправить.
У меня все работает правильно.
За исключением 1 вещи - если в сценарии есть какой-либо оператор 'cd', файл нене закрывайте до того, как скрипт закончится.Пожалуйста, помогите мне здесь
Не уверен, почему это происходит.
Вот упрощенная версия кода.
#!/bin/ksh
#Need to redirect output to file and stdout
exec 6>&1 #save stdout in [6]
exec 1>shell.log 2>&1 #redirect stderr and stdout to file
#if any error happens reset stdout and print the log contents
trap '
echo "Error Trap";
exec 1>&- 1>&6 6>&-;
echo | cat shell.log>&1;
echo "send the log file by mail";
exit 1' ERR
#cd / #Uncomment and the script behaves differently
echo "some task"
./somescript.ksh #this requires me to cd to its directory and then execute
trap - ERR #End the ERR trap
#in case of normal exit print the log contents
trap '
echo "Normal Exit"
exec 1>&- 1>&6 6>&-;
echo | cat shell.log>&1;
exit 1' EXIT