Grep qstat avec une variable ne retourne rien

J’ai de la difficulté à taper qstat avec une variable

Scénario : script-A mon wrapper soumet un autre script-B en tant que travail, à l’intérieur de script-B une variable $ New_OS. J’essaie de faire dormir mon script-B jusqu’à ce que tous (Job1, job2..jobx) soient terminés.

Script :

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; 

Problème : La variable $ Job_status qui est censée renvoyer le nombre de travaux avec un nom $ New_OS ne renvoie que 0 même si les travaux sont toujours en cours d’exécution.

Question : Pourquoi le grep de $ New_OS dans qstat ne renvoie pas les travaux avec $ New_OS comme noms? Je ne pouvais pas trouver le problème ici, s’il vous plaît me suggérer une solution ou un travail autour. Merci d’avance.

Enfin, l’ajout de ‘*’ dans mon grep a fonctionné.

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

Grep attendu pour fonctionner sans “*”, car je ne cherche pas à “grep -w” pour une correspondance exacte. Je le partage juste au cas où quelqu’un se retrouverait dans une situation similaire. Merci.

Que diriez-vous d’utiliser suivant

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

Comme je n’ai pas de qstat dans mon système, je ne pouvais pas vérifier, cela devrait fonctionner mais laissez-moi savoir comment ça se passe.