我在使用变量
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作为名称返回作业?我无法在这里弄清楚问题,请建议我解决方案或解决方法。提前致谢。
答案 0 :(得分:2)
最后在我的grep中添加了'*'。
Job_status1=`qstat | grep ${New_OS}* | wc -l`
预期grep在没有'*'的情况下工作,因为我不希望'grep -w'完全匹配。我正在分享它,以防万一有人在类似的情况下结束。感谢。
答案 1 :(得分:0)
如何使用以下内容。
Job_status1=$(qstat | grep -c ${New_OS}*)
由于我的系统中没有qstat
因此无法检查,它应该可以工作但是,让我知道它是怎么回事。