Bonjour tout le monde,
Je suis en train de faire un script de surveillance de process pour le boulot.
J'ai un fichier de config qui contient des lignes du type :
DeskI_JSLAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/boe_jobsd" -lib pp_procFC -jsTypeDescription "Desktop Intelligence Job Server" -objectType CrystalEnterprise.FullClient -name parva7304173.DeskI_JS -ns parva7304173 -type MIXEDPROC -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.DeskI_JS_DeskIJobServer.pid" -restart -protocol default -fg'
ou
webiserver2LAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/WIReportServer" -name parva7304173.webiserver2 -ns parva7304173 -service -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.webiserver2_WebIReportServer.pid" -restart -protocol default -fg'
De ca, je dois sortir différents champ :
- deski
- boe_jobsd
- parva7304173.DeskI_JS_DeskIJobServer.pid
puis
- webiserver2
- WIReportServer
- parva7304173.webiserver2_WebIReportServer.pid
Comme vous le voyez, les champs ont des longueurs différentes, ils peuvent ne pas être placés dans le même ordre, etc.
Pour commencer et récupérer le process à surveiller je fais :
1 2 3 4 5 6 7 8
| line=<MaLigneDeTexteARallonge>
echo "$line"
Idx_LAUNCH=$(echo $line | awk '{print index($1, "LAUNCH")}')
echo "L'index est : $Idx_LAUNCH"
let "Idx_MoinsUn=$Idx_LAUNCH-1"
echo "L'index -1 est : \"$Idx_MoinsUn\""
echo "$line"
echo $line | awk '{print substr($1, 1, 8)}' |
Me renvoie :
Code:
1 2 3 4 5
| DeskI_JSLAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/boe_jobsd" -lib pp_procFC -jsTypeDescription "Desktop Intelligence Job Server" -objectType CrystalEnterprise.FullClient -name parva7304173.DeskI_JS -ns parva7304173 -type MIXEDPROC -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.DeskI_JS_DeskIJobServer.pid" -restart -protocol default -fg'
L'index est : 9
L'index -1 est : "8"
DeskI_JSLAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/boe_jobsd" -lib pp_procFC -jsTypeDescription "Desktop Intelligence Job Server" -objectType CrystalEnterprise.FullClient -name parva7304173.DeskI_JS -ns parva7304173 -type MIXEDPROC -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.DeskI_JS_DeskIJobServer.pid" -restart -protocol default -fg'
DeskI_JS |
Donc je récupère bien mon premier champ
Mais si je remplace
echo $line | awk '{print substr($1, 1, 8)}'
par
echo $line | awk '{print substr($1, 1, $Idx_MoinsUn)}'#sachant que Idx_MoinsUn=8
J'obtiens
1 2 3
| awk : 0602-562 La zone $() n'est pas correcte.
Le numéro de la ligne de saisie est 1.
Le numéro de la ligne source est 1. |
Pouvez vous m'indiquer la raison de cette erreur?? (je sais que vous le pouvez
)
Bonne journée.
PS : je travaille sur de l'AIX 5.3 avec ksh.
Résolu en remplacant ma dernière ligne par :
echo "$line $Idx_LAUNCH" | awk '{print substr($1, 1, $NF)}'
Partager