Strg + C, um eine Endlosschleife zu unterbrechen und dann etwas außerhalb der Schleife in einem Bash-Skript auszuführen, ohne zu beenden?

1145
quanta

Ich habe so viele Antworten gelesen und sie schlagen alle vor, das Skript zu töten oder in den Hintergrund zu senden usw. Was ich will, ist

während wahr wahr

etwas...

if (ctrl + c wird auf break gedrückt)

Echo "Aus der Schleife"

Ich bin außerhalb der Schleife, weil Strg + C gedrückt wurde und ich hier andere Sachen machen kann, ohne das Skript zu beenden ....

Und diese Frage ist kein Duplikat, denn ich habe stundenlang gesucht und keine Antwort gibt mir, was ich will. Das "Out of the Loop" wird nie gedruckt, ich habe so viele Beispiele aus verschiedenen Antworten ausprobiert!

Info: Ich verwende (1) Scientific Linux SL Version 5.4 (Boron), (2) Ubuntu 16.04

Edit: Ich möchte, dass genau dieser Code funktioniert

#!/bin/bash  loopN=0  while true do  echo "Loop Number = $i" i=$(($i+1))  #I want to break this loop when Ctrl+C is pressed  done  #Ctrl+C has been pressed so I am outside the loop going to do something..  echo "Exited the loop, there were $i number of loopsexecuted !" #here I will execute some commands.. let's say date date  #and then I will exit the script 
0
Sie möchten ** fangen ** '' Ctrl-C '' Hier sind einige Beispiele http://stackoverflow.com/questions/12771909/bash-using-trap-ctrlc Wenn Sie eine spezifischere Hilfe benötigen, zeigen Sie uns, was Sie versucht haben ( tatsächlicher Code) Nifle vor 7 Jahren 0
@Nifle Ich habe ein Beispiel beigefügt. Wie kann ich dieses spezielle Beispiel funktionieren lassen? quanta vor 7 Jahren 0

1 Antwort auf die Frage

2
Nifle
#!/bin/bash  #function called by trap do_this_on_ctrl_c(){ echo "Exited the loop, there were $i number of loops executed !" date exit 0 }  trap 'do_this_on_ctrl_c' SIGINT  loopN=0  while true do echo "Loop Number = $i" i=$(($i+1)) done 
Genau das wollte ich, vielen Dank. Ich habe bemerkt, dass dies funktioniert, wenn ich es mit `. / Script.sh` ausführe, aber es schlägt fehl, wenn ich es mit 'source script.sh` mache. Ich bin in diesem Scripting-Bereich wirklich neu, möchte aber sehr gerne lernen. quanta vor 7 Jahren 0
seltsames Problem wieder! Es funktioniert unter Scientific Linux (SL-Release 5.4 Boron), aber unter Ubuntu 16.04 hebt mich "Strg + C" aus dem Skript heraus, bevor überhaupt die Funktion "do_this_on_ctrl_c ()" aufgerufen wird. Was muss ich tun, damit es auf meinem Ubuntu funktioniert? quanta vor 7 Jahren 0