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.