#!/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
Ctrl + C, чтобы разорвать бесконечный цикл, а затем сделать что-то вне цикла в bash-скрипте без выхода?
967
quanta
Я прочитал так много ответов, и все они просто предлагают убить сценарий или отправить его на задний план и т. Д. Я хочу, чтобы
в то время как правда
что-то...
если (Ctrl + C нажата перерыв)
сделано эхо "Из цикла"
Я нахожусь вне цикла, потому что были нажаты ctrl + c, и поэтому я могу делать другие вещи здесь, не выходя из сценария ....
И этот вопрос не является дубликатом, потому что я искал несколько часов, и ни один ответ не дает мне то, что я хочу. Это «из цикла» никогда не печатается, я пробовал так много примеров из разных ответов!
Информация: Я использую (1) Scientific Linux SL выпуск 5.4 (Boron), (2) Ubuntu 16.04
Изменить: я хочу, чтобы этот точный код работал
#!/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
Вы хотите ** trap ** '' Ctrl-C '' Вот несколько примеров http://stackoverflow.com/questions/12771909/bash-using-trap-ctrlc Если вам нужна более конкретная помощь, покажите нам, что вы пытались ( актуальный код)
Nifle 7 лет назад
0
@Nifle Я включил пример, как я могу заставить этот конкретный пример работать?
quanta 7 лет назад
0
1 ответ на вопрос
2
Nifle
Это именно то, что я хотел, большое спасибо. Я заметил, что это работает, когда я выполняю его, используя `. / Script.sh`, но не работает, если я` source script.sh`. Я действительно новичок в этом бизнесе сценариев, но я бы очень хотел научиться.
quanta 7 лет назад
0
опять странная проблема! Он работает в Scientific Linux (версия SL 5.4 boron), но в Ubuntu 16.04 `Ctrl + C` выводит меня из сценария, даже не вызывая функцию` do_this_on_ctrl_c () `. Что я должен сделать, чтобы он работал на моем Ubuntu?
quanta 7 лет назад
0
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4