Как закрыть / завершить / прекратить случайное «если» в терминале?

Я соглашаюсь с Книжной ссылкой Дракона; IMO, это - полное руководство к конструкции компилятора. Подготовьтесь к некоторой жесткой теории, все же.

, Если Вы хотите книгу, которая легче на теории, , Игровое Мастерство Сценариев могло бы быть лучшей книгой для Вас. Если Вы - общий новичок в теории компилятора, она обеспечивает более нежное введение. Это не покрывает более практические методы парсинга (выбирающий непрогнозирующий рекурсивный спуск, не обсуждая LL или LR-анализ), и как я вспоминаю, это даже не обсуждает вида теории оптимизации. Плюс, вместо того, чтобы компилировать в машинный код, это компилирует в байт-код, который, как предполагается, работает на VM, который Вы также пишете.

Это - все еще достойное чтение, особенно если можно взять его для дешевого на Amazon. Если Вы только хотите легкое введение в компиляторы, Игровое Мастерство Сценариев не является плохим способом пойти. Если Вы хотите пойти хардкор впереди, то необходимо согласиться на не что иное как Книгу Дракона.

2
задан 16.05.2020, 04:59

3 ответа

Вы запустили if оператор. Следующая команда выполняется, и только если она возвращается, нулевой статус выхода (успех) следующие выполняемые команды, от then ключевое слово вплоть до fi ключевое слово ("если" назад). Как:

if true
then
    echo yes
fi

Обычно каждый использует test программа (иначе [) для тестирования различных вещей, таких как:

if [ $somevariable = someword ]

или

if [ -f /some/file/exists ]

Ctrl-C А прерывает его прекрасный для меня.

1
ответ дан 16.05.2020, 05:00
  • 1
    хм, ctrl-c определенно didn' t работают на меня, и я видел fi в другом месте и попробовал это также, но ничего подобного не возвратил меня командной строке. Я wouldn' t быть удивленным, получило ли мое последующее приготовление пюре кнопки меня в немного более сложный набор вложенных скобок и кавычек, чем, я думал... Теперь я знаю, что попробовать в следующий раз, хотя;-) Спасибо! – tutysara 16.05.2020, 05:01

Используйте Управление - D в случаях как это.

Вы застряли в оболочке удара if условная управляющая структура.

Это - вывод, который я вижу:

$ if
> 
> '
> "
> sdf
> )
> []

Управление - удар D

: синтаксическая ошибка: неожиданный конец файла

2
ответ дан 16.05.2020, 05:00

Используйте stty -a, чтобы быть уверенными, что предают земле = ^C. Если это не, ^C является просто другим символом. stty sane помогает мне из терминального беспорядка. См. man stty. Вот первые несколько моих строк (где ^C действительно прерывает если....):

walt@spong:~(0)$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
...
0
ответ дан 16.05.2020, 05:01
  • 1
    Да, ^C работы и работал на все другие вещи (это weren' t в других отношениях безразличный), это просто didn' t в этом случае. Моя теория - это I' d случайно создал последовательность в if оператор, который вышел или проигнорировал ^C. Последующие пробные версии с if операторы в терминале все успешно прервались с ^C. – Alex Gian 16.05.2020, 05:01
  • 2
    Хорошая идея. mHurley, Вы могли также проверить, работает ли ctrl+C, но вводящий в поверхностной команде (например, echo foo), то ввод ctrl+C. – keparo 16.05.2020, 05:02

Теги

Похожие вопросы