2017-09-25 4 views
0

Je veux ajouter plusieurs scripts en queue en un.Linux: Tail -f options multiples

premier:

tail -f /var/script/log/script-log.txt | if grep -q "Text1"; then echo "0:$?:AAC32 ONLINE" 
fi 

Je veux ajouter 5 lignes avec un mot diffrent, est-ce possible?

sinon si, si etc. etc.

Merci!

+0

Pourriez-vous ajouter un exemple du contenu du fichier journal et de la sortie attendue? –

+1

Ne pouvez-vous pas simplement utiliser ou dans votre texte grepped et donc grep -E "example1 | example2" –

Répondre

1
tail -f /var/script/log/script-log.txt | if grep -E "Text1|Text2|Text3"; then echo "0:$?:AAC32 ONLINE" fi 
+0

Merci pour le script, je veux faire écho à des choses différentes. Si texte = X alors echo X etc – user3130478

1

Dans votre cas, il suffit d'utiliser l'opérateur AND logique:

tail -f /var/script/log/script-log.txt | grep -q "text1\|text2\|text3" && echo "0:$?:AAC32 ONLINE" 
+0

Merci pour le script, je veux faire écho à des choses différentes. Si text = X alors echo X etc. – user3130478

+0

@ user3130478, qu'est-ce que 'X' dans votre cas? – RomanPerekhrest

+0

Je veux vérifier s'il y a un mot dans le fichier journal, si le mot sort doit faire écho à quelque chose. – user3130478

0
#!/bin/sh 

PIPENAME="`mktemp -u "/tmp/something-XXXXXX"`" 
mkfifo -m 600 "$PIPENAME" 
tail -f /tmp/log.txt >"$PIPENAME" & 

while read line < "$PIPENAME" 
do 
    echo $line # Whatever you want goes here 
done 

rm -f "$PIPENAME" 

Si vous voulez Bash spécifique, vous pouvez utiliser l'option -u pour la lecture, et ensuite vous pouvez rmer le nom tuyau avant que la boucle ne commence, ce qui est plus garanti de laisser les choses propres lorsque vous avez terminé.