Сценарий Bash не заканчивается Ctrl + C

Мой скрипт не может быть завершен клавишей Ctrl + C. Это ошибка.

Пожалуйста, объясните, как изменить мой скрипт, чтобы сделать его завершаемым с помощью Ctrl + C.

#!/bin/bash while true; do paplay /usr/share/sounds/phone.wav done 

  • Получение различных частей линии
  • Сценарий оболочки выполняется по-разному на основе рабочего каталога.
  • Подстановочный знак Bash для соответствия точно n символам
  • Ожидает применения инструмента для платформы ARM
  • Сохраняйте количество ресурсов для виртуальной консоли (Ctrl + Alt + Fx)
  • Необходимо передавать URL-адреса в кавычках
  • Состояние внутри строки в Bashscript
  • Почему вы должны быть осторожны при использовании встроенной функции истории Bash для повторного запуска предыдущих команд, содержащих переменные?
  • 2 Solutions collect form web for “Сценарий Bash не заканчивается Ctrl + C”

    Если вы поймаете SIGINT в родительской оболочке и выйдете из оболочки, она также сбрасывает папиру:

     trap exit SIGINT; while true; do paplay /usr/share/sounds/phone.wav ; done 

    Похоже, что paplay блок блокирует сигнал INT, и это влияет на то, что родительская оболочка не запускает обработчик по умолчанию.

    Установка обработчика в родительскую оболочку, в которой вы перезагружаете обработчик, и ререйз сигнала, вероятно, лучше решает его:

     trap 'trap - SIGINT; kill -SIGINT $$' SIGINT; while :; do paplay /usr/share/sounds/linuxmint-login.wav ; done 

    exit подход процесс запуска предполагает, что его ребенок вышел добровольно, тогда как со вторым подходом это похоже на то, что сценарий был убит с SIGINT который был).

    На самом деле вопрос о paplay , который может блокировать сигналы, или (как намечено в Arch Wiki ), может быть просто слишком занят.

    Вы могли бы сделать сценарий проще для остановки, поставив sleep 1 в цикле.

    Linux и Unix - лучшая ОС в мире.