2013-05-20 3 views
0

У меня есть скрипт bash, который запускает команду для получения ее результата и что-то зависит от результата. Вот сценарий:Как получить результат команды kill в скрипте bash

#!/bin/bash 
commandResult=$(($myCommand) 2>&1) 
if [[ "$commandResult" == *Error* ]]; then 
    x="failed" 
else 
    x="success" 
fi 
echo $x 
exit 0; 

Там нет никаких проблем с этим сценарием, проблема, когда я пытаюсь убить $myCommand в середине запуска сценария с помощью kill -9 $myCommand в командной строке, то $commandResult будет нулевым, и " успех ".

Как я могу поместить результат уничтожения в $commandResult или любым другим способом узнать, был ли процесс убит в этом скрипте?

Любая помощь будет высоко оценена.

ответ

1

Вы должны проверить код выхода своей команды, а не вывод ее на стандартную ошибку. myCommand должен выйти с 0 при успешном завершении и некоторый ненулевой код при сбое. Если он убит командой kill, код выхода будет автоматически равен 128 + n, где n - это сигнал, который вы использовали для его уничтожения. Затем вы можете проверить на успех с

if myCommand; then 
    echo success 
    exit 0 
else 
    status=$? 
    echo failure 
    exit $status 
fi 

Кроме того, вы, вероятно, don't need to use kill -9. Начните с kill (который отправляет сигнал gentler TERM); если это не работает, сделайте шаг до kill -2 (INT, эквивалент Ctrl-C).

Смежные вопросы