2012-06-22 1 views
3

Я пытаюсь проверить, открыт ли файл, а затем что-то сделать с кодом выхода. В настоящее время это делать так:Переадресовать код выхода LSOF в переменную

FILE=/usr/local/test.sh 
    lsof "$FILE" | grep -q COMMAND &>/dev/null 
    completed=$? 

Есть ли способ, вы можете нажать на код выхода прямо в локальную переменную, а не перенаправлять вывод в/DEV/нуль и захватив '$? переменная?

+1

Что вы планируете делать с кодом возврата? Если вы просто управляете оператором 'if', тогда вы можете просто сделать' if lsof '$ FILE "&>/dev/null; то ... ' –

ответ

2

Ну, вы могли бы сделать:

lsof "$FILE" | grep -q COMMAND; completed=$? 

Там нет необходимости перенаправлять ничего, как Grep -q спокойно в любом случае. Если вы хотите выполнить определенные действия, если grep преуспеет, просто используйте оператор & &. Сохранение статуса выхода в этом случае, вероятно, не нужно.

lsof "$FILE" | grep -q COMMAND && echo 'Command was found!' 
Смежные вопросы