Ho scritto uno script Bash piccolo per trovare tutti i gruppi di modifiche Mercurial (a partire dalla punta) che contiene la stringa passata in argomento:Bash: come interrompere questo script quando c'è un CTRL-C?
#!/bin/bash
CNT=$(hg tip | awk '{ print $2 }' | head -c 3)
while [ $CNT -gt 0 ]
do
echo rev $CNT
hg log -v -r$CNT | grep $1
let CNT=CNT-1
done
Se interrompo che colpendo Ctrl-C, il più delle volte il il comando attualmente eseguito è "hg log" ed è quel comando che viene interrotto, ma poi il mio script continua.
Mi è stato poi pensando di verifica dello stato di ritorno "hg log", ma perché sto tubazioni in grep io non sono troppo sicuro di come andare a questo proposito ...
Come dovrebbe Vado in uscita da questo script quando viene interrotto? (btw non so se questo script è buono per quello che voglio fare ma fa il lavoro e comunque sono interessato al problema "interrotto")
Grazie mille, +1 a tutti. Funzionando bene :) – SyntaxT3rr0r
Dovrei probabilmente indicare che sia $ PIPESTATUS che l'opzione pipefail che Arkku ha menzionato sono specifiche di Bash versione 3+. Non sono supportati da altre shell. –
grazie, sui miei Debian Linux ho effettivamente Bash 3+ ma sui miei Mac è Bash 2.05. – SyntaxT3rr0r