将 lsof 退出代码重定向到变量

use*_*465 5 linux bash lsof

我正在尝试测试文件是否打开,然后对退出代码执行某些操作。目前是这样做的:

   FILE=/usr/local/test.sh
   lsof "$FILE" | grep -q COMMAND &>/dev/null
   completed=$? 
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将退出代码直接推送到局部变量中,而不是将输出重定向到 /dev/null 并捕获“$”?多变的?

tvm*_*tvm 3

好吧,你可以这样做:

lsof "$FILE" | grep -q COMMAND; completed=$?
Run Code Online (Sandbox Code Playgroud)

无需重定向任何内容,因为 grep -q 无论如何都很安静。如果您想在 grep 成功时执行某些操作,只需使用 && 运算符。在这种情况下,存储退出状态可能是不必要的。

lsof "$FILE" | grep -q COMMAND && echo 'Command was found!'
Run Code Online (Sandbox Code Playgroud)