Initrd: Были может, я нашел код для real-root-dev

Так... формат awk программа является серией EXPRESSION { ACTION } операторы. Если Вы опускаете ACTION часть, это принимает print, и если Вы опускаете EXPRESSION, это соответствует всему. Таким образом, это печатает все:

awk 1

Поскольку Ваше выражение (1) оценивает как "верный" (и у Вас нет действия). Это верно для всех Ваших "x-does-print" примеров, так как дали Ваш демонстрационный вход, у них всех есть ненулевое и непустое EXPRESSION и нет ACTION. Учитывая пустую входную строку, $0 во втором примере ничего не произвел бы.

Аналогично, Ваши примеры "ничего-печати" кроме первого имеют выражение, которое оценивает ко "лжи" (или пустая строка или числовой 0). {$0="abc"} пример работает по-другому: это ничего не печатает, потому что это не имеет никакой инструкции по печати. Учитывая длинную входную строку по крайней мере с 999 полями, второй пример ($999) на самом деле распечатал бы строку.

Это фундаментально для как awk работает. Настолько уверенный, это документируется, и это не собирается повреждаться.

Обратите внимание, что Ваши примеры "катастрофических отказов" на самом деле не отказывают; Вы только что сделали основную ошибку в своем синтаксисе оболочки. Awk интерпретирует аргументы, запускающиеся с - как параметры командной строки. Заключение в кавычки их ничего не изменяет. Если Вы хотите передать awk отрицательные числа как это, необходимо снабдить префиксом awk программу -- чтобы указать к awk, что это должно прекратить обрабатывать опции:

echo 'crashes' | awk -- -3.14159

Распечатает "катастрофические отказы", с тех пор -3.14150 ни пустая строка, ни числовой 0.

2
11.02.2013, 17:26
1 ответ

Посмотрите этот файл для своего ядра (вероятно, большинство даже не переключило главные версии ядра):

http://www.mjmwired.net/kernel/Documentation/devices.txt

4
27.01.2020, 22:01

Теги

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