Путаница может быть вызвана тем фактом, что исходный автор использовал то же имя переменной для оболочки:
benchmark=30;gr...
как он / она сделал внутри awk
:
awk -vbenchmark=$benchmark
который может или не может присвоить значение переменной оболочки эталонного теста
для awk
переменная эталонный тест
.
Как только awk
имеет это значение (в данном случае 30
), awk
проверяет, что шестой столбец вашего входного файла wk.txt
больше, чем это значение:
$6 > benchmark
Тест, используя ваш пример, представляет собой сравнение строк:
for > 30
, которое, хотя и разрешено, на самом деле не имеет большого смысла. Входной файл примера является подлинным примером или просто случайным тестом?
Это оценивается как истина, поэтому awk
выводит всю строку в wc -l
, который считает количество строк. Поскольку у вас есть только одна строка во входном файле, количество строк, в которых шестой столбец больше 30, составляет 1
.
Это значение присваивается переменной оболочки b
.