Я очень новичок в SED, и мне тяжело пытаться добавить конец каталога. То, что я делаю, включает в себя две основные вещи с помощью sed, но по какой-то причине никаких изменений не происходит после запуска сценария. Я покажу сегменты своего сценарияSed append to end of line directory
У меня есть сценарий bash, который вытаскивает мой домашний каталог с хоста, и я определяю переменную ID.
USERNAME="test"
#pull the home directory
dir=$(ssh -n -t $SERVERNAME "echo \$HOME";)
приведенный выше пример будет хранить/экспорт/дом/ID в переменной
echo $dir | sed 's/\([/export/home]*\).*/\1/' > olddir
СЕПГ команды dir
выше магазинов/экспорта/дома/в файле olddir
(взлетает окончание)
sed -i 's_/home/$ _\$USERNAME_' olddir
я сейчас пытаюсь изменить /export/home/
к /export/home/test
используя определенную переменную с экранированием $
.
после запуска сценария он по-прежнему имеет /export/home/
в качестве записи в файле olddir
. Я использую -i
, чтобы изменить файл, и я думаю, что правильно использую разделители. что я могу делать неправильно? я даже снял $
из переменной USERNAME, которая ничего не делала. Я знаю, что мне не хватает чего-то маленького, но я просто не могу понять. Я очень ценю ваше время, чтобы ответить на мой вопрос.
Зачем вам нужен вспомогательный файл? из вашей переменной 'dir' вы можете получить то, что хотите, в переменной' newdir' так: 'newdir = $ {dir%/*}/$ USERNAME'. Теперь причиной отказа является то, что вы используете одинарные кавычки: bash запрещает расширение переменных в одинарных кавычках. Вместо этого: 'sed -i 's_/home/$ _'" $ USERNAME "'_' olddir' должен работать. –