带变量的grep qstat不返回任何内容

时间:2017-09-13 14:23:46

标签: bash unix awk grep sh

我在使用变量

greping qstat时遇到问题

场景:脚本 - 我的包装器提交另一个脚本-B作为作业,在脚本-B中我在循环中提交其他作业(job1,job2..jobx),每个作业具有不同的作业名称,这些作业名称存储在变量$ New_OS中。我试图让我的脚本-B睡眠,直到所有(Job1,job2..jobx)完成。

脚本

Job_status=`qstat | grep "${New_OS}" | wc -l`
echo -e "\n\nJob_status: $Job_status"
while [ $Job_status -ne "0" ];
do
    echo -e "Running PostProcessing for $Job_status sampleR, sleeping for 3 minutes..."
    sleep 3m
    Job_status=`qstat | grep "${New_OS}" | wc -l`
done;

问题:即使作业仍在运行,应该返回名称为$ New_OS的作业数的变量$ Job_status也会返回0。

问题:为什么qstat中$ new_OS的grep没有以$ New_OS作为名称返回作业?我无法在这里弄清楚问题,请建议我解决方案或解决方法。提前致谢。

2 个答案:

答案 0 :(得分:2)

最后在我的grep中添加了'*'。

   Job_status1=`qstat | grep ${New_OS}* | wc -l`

预期grep在没有'*'的情况下工作,因为我不希望'grep -w'完全匹配。我正在分享它,以防万一有人在类似的情况下结束。感谢。

答案 1 :(得分:0)

如何使用以下内容。

Job_status1=$(qstat | grep -c ${New_OS}*)

由于我的系统中没有qstat因此无法检查,它应该可以工作但是,让我知道它是怎么回事。