Поскольку спецификаторы формата не совпадают с тем, который вы определили, и количеством аргументов, которые видит printf
.При
printf "%s (%s)\n"
# ^^^ ^^^
, указанном выше, команда исключает две последовательности строк, за которыми следует символ новой строки.Но ваши аргументы printf()
больше, чем
version = blahblah something
# (1) (2) (3) (4)
Так что printf()
видит это несоответствие между спецификаторами и аргументами и вставляет символ новой строки после 2-го аргумента, который является =
printf '%s (%s)\n' 'version' '=' 'blahblah' 'something'
Поскольку вы ожидаете напечатать version =
в одну строку, выведите весь вывод grep
в одну строку, как в ответе анубхавы таким образом, что printf
увидит аргументы, приведенные ниже
printf '%s (%s)\n' 'version = blahblah' 'something'