je tente la commande suivante sur la ligne de commandedans une commande shell
ps -u `id | cut -f2 -d"=" | cut -f1 -d"("` -f | grep ppLSN | awk '{print $9}' | awk '{FS="=";print $2}' | grep KLMN | wc -l
la valeur de Teh commande est renvoyée comme 7
.
mais quand je suis en train de la même commande dans un script abc_sh comme ci-dessous
ps -u `id | cut -f2 -d"=" | cut -f1 -d"("` -f | grep ppLSN | awk '{print $9}' | awk '{FS="=";print $2}' | grep $XYZ | wc -l
et je fais appel le script sur la ligne de commande comme abc_sh XYZ=KLMN
et il ne fonctionne pas et retourne 0
le problème est avec le grep dans la commande grep $XYZ
pourrait quelqu'un s'il vous plaît dire pourquoi cela ne fonctionne pas? Parce que votre variable $ 1 (premier argument du script) est définie sur XYZ = KLMN.
Pour commencer, au lieu de cette coupe inutile, utilisez id -u. –
Mauvaise question, pourquoi cachez-vous des informations pertinentes? D'abord cela a fonctionné avant (aucune mention de cela), alors vous utilisez ksh, pas bash (l'habituel), et aucune mention de cela non plus. –
Séparer l'argument '-f' si loin vers la droite après l'expansion de la commande le fait perdre dans le fouillis. Mettez-le au début: 'ps -f -u ...' (j'ai utilisé ici des traits d'union séparés uniquement pour "esthétique"). –