Используемая вами команда system
не выполняет то, что вы ожидаете. Он возвращает код возврата команды, которую вы выполняете, а не стандартный вывод.
system(expression)
: Выполните команду, заданную expression
, способом, эквивалентным system()
функция, определенная в объеме системных интерфейсов POSIX.1-2017
и возвращающая статус выхода команды.
Это легко увидеть с помощью следующего:
$ awk 'BEGIN{print system("true"), system("false")}'
0 1
Здесь мы представили команды true
и false
(см. man true
и man false
) о том, что они делают.
Если вы хотите захватить выходные данные команды, getline
команда это то, что вам нужно. Подробный документ о том, что можно и что нельзя делать getline
можно найти в Ed Morton's All about getline . Также см. его ответ для реализации этого OP.