На самом деле подстановка команд удаляет завершающие символы новой строки, а не добавляет их. Но если вы используете echo
для печати переменной позже, она добавляет ее по умолчанию.
Добавление завершающего символа x
или чего-то подобного действительно несколько хакерское, но это, вероятно, самый простой способ, и он работает во всех оболочках. Вы можете сделать его немного короче, используя echo x
вместо printf '%s' 'x'
.
Поскольку вы упомянули read
, вы могли бы использовать что-то подобное (и в Bash ):
IFS= read -rd '' var < <(newlinetest with)
Я оставлю вам решать, красивее ли это, чем это:
var=$(newlinetest with; echo x)
var=${var%x}
Хотя существует потенциальная разница в производительности между ними. В первом подстановка процесса создает канал, который read
считывает из по одному байту за раз , чтобы избежать переполнения разделителя (Здесь это не имеет значения, но оболочка не знает, что. )Подстановка команд будет считываться большими блоками и, следовательно, будет выполняться быстрее при больших выходных данных.
Репозитории в вашем образе настроены неправильно. Возник конфликт между
==> /etc/apt/sources.list.d/dropbox.list <==
deb [arch=i386,amd64] http://linux.dropbox.com/debian stretch main
==> /etc/apt/sources.list.d/linux_dropbox_com_debian.list <==
deb [trusted=yes] http://linux.dropbox.com/debian stretch main
Необходимо объединить параметры в одну запись:
rm /etc/apt/sources.list.d/linux_dropbox_com_debian.list
echo 'deb [arch=i386,amd64 trusted=yes] http://linux.dropbox.com/debian stretch main' > /etc/apt/sources.list.d/dropbox.list
Поскольку изображение было предоставлено вашей компанией, лучшим долгосрочным -решением будет попросить того, кто предоставил вам его, исправить его...