gpt4 book ai didi

linux - Ubuntu 在 grep 中使用 -q 标志时出现 EPIPE 错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:28 25 4
gpt4 key购买 nike

我有一个 bash 脚本,用于检查某些永久进程是否正在运行。脚本基本上是:

#!/bin/bash

processIsRunning=$(forever list | grep -q 'process/index.js')
if [ -n $processIsRunning]; then
echo 'Processes are running'
else
echo 'Processes are not running'
fi

虽然我得到了这个错误:

events.js:72
throw er; // Unhandled 'error' event
^
Error: write EPIPE
at errnoException (net.js:904:11)
at Object.afterWrite (net.js:720:19)

如果我在第 3 行从我的 grep 命令中删除“-q”标志,那么我不会收到管道错误,而是会收到有关尝试将 grep 结果作为命令运行而不是仅仅检查的错误输出的长度大于 0。有谁知道为什么 -q 参数会导致 EPIPE 错误?

根据评论更新:我的错误,我是 bash 的新手,正在尝试学习如何使用 if 语句。我最初将它直接放在 if 语句中,但由于它不起作用而将其取出到一个变量中(事实证明它失败是因为我缺少空格,没有意识到它们是 bash 中的要求)。我显然没有正确移植它。我目前只使用不带 -q 的 grep,然后检查输出的长度,效果很好。

最佳答案

尝试这样的事情:

forever list | grep -q 'process/index.js'
if [ $? -eq 0 ]; then
echo 'Processes are running'
else
echo 'Processes are not running'
fi

grep -q 表示不要向标准输出写入任何内容。

$?用于查找上次执行命令的返回值。

关于linux - Ubuntu 在 grep 中使用 -q 标志时出现 EPIPE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com