Je crois Ctrl- Cpeut être piégé dans des scripts bash. Est-il également possible de le piéger dans un script Awk afin de gérer cet événement?
Par exemple, pour abandonner le traitement, mais imprimer les résultats de ce qui a déjà été traité, au lieu de simplement cesser de fumer?
shell-script
awk
trap
Eugene Beresovsky
la source
la source
Réponses:
Je ne connais aucune
awk
implémentation qui prend en charge cela. Vous pouvez écrire une extension pourgawk
cela , mais ici, je préfère passer à une autre langue.perl
facilite la conversion deawk
scripts avec sona2p
script.Par exemple, si vous avez un
awk
script comme:a2p
dessus vous donnera quelque chose comme:Que vous pouvez modifier pour ajouter votre gestion du signal (et supprimer ce traitement d'
var=value
arguments dont nous ne voulons pas ici, et la partie destinée aux systèmes qui ne prennent pas en charge#!
):Une autre alternative pourrait être d'interrompre l' alimentation des données à
awk
, et ontawk
ignorer le SIGINT, comme au lieu de:faire:
Ctrl+Cva alors tuer
cat
mais pasawk
.awk
continuera à traiter l'entrée restante toujours dans le tuyau.Pour détecter l' Ctrl+Cen
awk
, vous pouvez le faire:la source