Linux 将命令的输出分配给不同于原始输出(bash)的环境变量

Linux 将命令的输出分配给不同于原始输出(bash)的环境变量,linux,bash,process,environment-variables,lines,Linux,Bash,Process,Environment Variables,Lines,我最初设计的脚本遇到了一个问题 我正在尝试获取命令显示的行数,如果该行数大于某个值,则会发生某些情况 我的问题是,最初它工作得很好,现在不行了 在我的脚本中,我使用以下命令 NO_LINES=$(ps -ef | grep "sh monitor.sh" | wc -l) echo $NO_LINES echo$NO_line打印0,即使它应该打印grep命令的行1 如果我像这样单独执行命令(不将结果分配给环境变量) ps -ef | grep "sh monitor.sh" | wc -l

我最初设计的脚本遇到了一个问题

我正在尝试获取命令显示的行数,如果该行数大于某个值,则会发生某些情况

我的问题是,最初它工作得很好,现在不行了

在我的脚本中,我使用以下命令

NO_LINES=$(ps -ef | grep "sh monitor.sh" | wc -l)
echo $NO_LINES
echo$NO_line
打印
0
,即使它应该打印grep命令的行
1

如果我像这样单独执行命令(不将结果分配给环境变量)

ps -ef | grep "sh monitor.sh" | wc -l
这将打印出正确结果的
1

为什么通过将结果赋给变量,值比原始结果低1

机器的bash版本是4.3.46(1)-版本


感谢这里的两件事1)您没有设置环境变量2)您如何在前台或后台运行脚本
sh monitor.sh
sh monitor.sh
是我正在寻找的进程的名称,它要么在后台运行,要么根本不运行。前两行来自另一个试图启动monitor.sh脚本的脚本。是的,我的坏。。将其分配给变量为什么不能直接使用
pgrep
检查名称为
sh monitor.sh
的进程是否存在?如果这是你的要求!您的目的只是想看看该流程是否可用@您是否尝试过在脚本中添加
ps-ef
?它是否在其输出中显示
sh monitor.sh
?@是的,我知道有其他方法可以解决此问题,以检查进程是否正在运行并获取其PID,但我最初是这样设计的,并且它工作正常。我很好奇为什么将结果分配到NO_行时,结果比实际结果低1(这种情况经常发生)。