L'analyse de la Sortie de Commande dans le Script Bash
Je veux lancer une commande qui donne le résultat suivant et de l'analyser:
[VDB VIEW]
[VDB] vhctest
[BACKEND] domain.computername: ENABLED:RW:CONSISTENT
[BACKEND] domain.computername: ENABLED:RW:CONSISTENT
...
Je suis seulement intéressé dans certaines œuvres, comme "ACTIVÉ", etc. Je ne peux pas la recherche juste pour le PERMIS que j'ai besoin d'analyser chaque ligne à la fois.
C'est mon premier script, et je veux savoir si quelqu'un peut m'aider?
EDIT:
J'ai maintenant:
cmdout=`mycommand`
while read -r line
do
#check for key words in $line
done < $cmdout
Je pensais que ce fait ce que je voulais, mais il semble toujours à la sortie de la suivante à droite avant la sortie de la commande.
./myscript.sh: 29: impossible d'ouvrir ... : Aucun fichier
Je ne veux pas écrire dans un fichier pour y parvenir.
Voici le psudo code:
cmdout=`mycommand`
loop each line in $cmdout
if line contains $1
if line contains $2
output 1
else
output 0
Shoubs - hmmm ... essayez
Chaque mot clé, je suis à la recherche d'est mutuellement exclusive - par exemple, je veux savoir quel mot clé de chaque ligne contient. ce sera éventuellement utilisé avec Nagios.
YOUR_COMMANDS | grep -e "YOUR_KEYWORD1\|YOUR_KEYWORD2\|..."
Ou de rediriger la sortie dans un fichierChaque mot clé, je suis à la recherche d'est mutuellement exclusive - par exemple, je veux savoir quel mot clé de chaque ligne contient. ce sera éventuellement utilisé avec Nagios.
OriginalL'auteur Mr Shoubs | 2010-11-25
Vous devez vous connecter pour publier un commentaire.
La raison de l'erreur est que
pense que le contenu de
$cmdout
est un nom de fichier.Vous pouvez soit le faire:
ou
ou
ou
ou
ou
Cependant, les dernières crée un shell interne est exécuté et toutes les variables définies dans la boucle sera perdu lorsque la boucle s'arrête.
OriginalL'auteur Dennis Williamson
"Comment puis-je lire un fichier (flux de données, variable), ligne par ligne (et/ou d'un champ par champ)?"
"Je définir des variables dans une boucle. Pourquoi ont-ils soudainement disparaître après la boucle se termine? Ou, pourquoi ne puis-je pas de tuyau de données à lire?"
Vous pouvez être, avec de la tuyauterie ou des processus de substitution.
OriginalL'auteur Ignacio Vazquez-Abrams
UTILISATION
Ce n'est pas la meilleure solution, mais c'est un mot à la traduction de ce que vous voulez et devrait vous donner quelque chose pour commencer et ajouter votre propre logique
if echo "$line" | grep -q "$1"; then
- pas besoin de backticks, les crochets, leswc
ou!= 0
OriginalL'auteur qwerty