我有一个bash脚本,用于检查某些永久进程是否正在运行。该脚本基本上是:
events.js:72
throw er; // Unhandled 'error' event
^
Error: write EPIPE
at errnoException (net.js:904:11)
at Object.afterWrite (net.js:720:19)
我收到此错误:
$(document).ready(function() {
var language = "en";
if (localStorage.getItem("language") != null)
language = localStorage.getItem("language");
i18n.init({
lng: language,
resStore: resources,
fallbackLng: "en"
}, function(o) {
$(document).i18n()
}), $(".lang").click(function() {
var o = $(this).attr("data-lang");
localStorage.setItem("language", o);
i18n.init({
lng: o
}, function(o) {
$(document).i18n()
})
})
});
如果我从第3行的grep命令中删除'-q'标志,那么我没有收到管道错误,但是我得到一个错误,它试图将grep结果作为命令运行而不是仅仅检查输出的长度大于0。 有谁知道为什么-q参数会导致EPIPE错误?
基于评论的更新: 我的错误,我对bash很新,并试图学习如何使用if语句。我最初直接在if语句中使用它,但是把它带到变量中因为它不起作用(事实证明它失败了,因为我没有空格,没有意识到它们是bash的要求)。我显然没有正确地移除它。我目前只使用grep而不使用-q,然后检查输出的长度,这样做效果很好。
答案 0 :(得分:1)
尝试这样的事情:
forever list | grep -q 'process/index.js'
if [ $? -eq 0 ]; then
echo 'Processes are running'
else
echo 'Processes are not running'
fi
grep -q表示不要向标准输出写任何内容。
$?用于查找上次执行的命令的返回值。