Сетевой интерфейс usb0 не работает встань

Если вы используете GNU или busybox, sed, вы сможете выполнить

sed -i "1i $header_line" "/tmp/$file_title"

Проблема, с которой вы столкнулись экранирование $ из оболочки, чтобы она не распознавала $header_line как переменную.

С NetBSD или OpenBSD sed (также с FreeBSD и macOS, но вам нужен пробел между -i и ''):

sed -i'' "1i\\
$header_line
" "/tmp/$file_title"

BSD sed, как и в традиционных реализациях sed, и как указано в POSIX, требует \ и символ новой строки после команды i, и поскольку мы заключаем двойные кавычки, нам нужно экранировать \ из оболочки.

Альтернативой может быть использование cat:

printf '%s\n' "$header_line" | cat - "/tmp/$file_title" >new_file && mv new_file "/tmp/$file_title"

Это также позволяет обойти проблемы с обратной косой чертой в значении $header_line, упомянутые Стефаном Шазеласом в комментариях ниже.

1
27.01.2018, 16:58
0 ответов

Теги

Похожие вопросы