#bash #sed
Вопрос:
echo -n "Username: "
read usernamert
echo -n "Password: "
read passwordt
echo -n "IP: "
read IPt
echo -n "Channel: "
read channelt
t1=$(echo "www://$usernamet:$passwordt@$IPt/TEST/SOMETHING?channel=$channelt1amp;TRUE=1")
sed -i "s "t_1", "t_2" "$t1", "AAA" g" test.txt
ссылка должна выглядеть так
www://имя пользователя:пароль@$1.1.1.1/ТЕСТ/ЧТО-ТО?канал=2 и ИСТИНА=1
итак, этот вид ссылки я хочу изменить с помощью строки в файле test.txt
«t_1», «t_2»
но все равно получается ошибка. Где я ошибаюсь? Я также попытался поместить переменные в «» внутри переменной t1, но это не помогло.
Комментарии:
1. Если вам нужно соответствовать
"
буквально, вам нужно избежать этого:"
2. когда я добавляю этот эскейп ТОЛЬКО с » и повторяю его, я получаю это(со всеми входными данными пользователя) «www://имя пользователя:пароль@$1.1.1.1/ПРОВЕРИТЬ/ЧТО-ТО?канал=2 и TRUE=1», и я раскомментирую команду sed, чтобы проверить ее, и ошибок нет, но когда файл cat, он все еще существует, эта строка «t_1», «t_2», вместо этого www…..
3. Это проще, если вы используете одинарные кавычки:
sed 's "t_1", "t_2" "'"$t1"'", "AAA" g'
4. Просто переключитесь на двойные кавычки вокруг переменной.
Ответ №1:
Ваши двойные кавычки ограничивают строки оболочки, а не используются буквально в sed
шаблоне и замене.
Заключите операцию в одинарные кавычки sed
, за исключением переменной.
sed -i 's "t_1", "t_2" "'"$t1"'", "AAA" g' test.txt