Ваша команда действительно работает так, как ожидалось; вы просите sed вернуть строки 4 и 5 из файла «2input1output». Как видите, позиционные аргументы (, то есть $1, $2 и $3 ), возвращаются, потому что это то, что есть в скрипте.
Что вам нужно сделать, так это сначала запустить сценарий, чтобы получить желаемый вывод (STDOUT ), а затем передать его в потоковый редактор (sed ). Итак, одним нажатием сохранить нужный контент в переменную:
$ MESSAGE=$(./2input1output Jojo Ar Dublin | sed -n 4,5p)
Помните, что если вам нужно сохранить символы новой строки при доступе к переменной, сначала заключите ее в двойные кавычки.