со вчерашнего дня я пытаюсь запустить в моем скрипте команду sed
, она обрабатывает текст и не сообщает мне, что есть какие-либо ошибки, но когда я проверяю файл, он просто подавляет текст, который предполагалось заменить.
Может ли кто-нибудь помочь мне с этим?
Вот мой код:
#!/bin/bash
echo "Bienvenue dans l'outils d'ajout à la base de données sur les Animés"
echo "Pour commencez veuillez taper le titre de l'animé dans ce format-ci"
echo "exemple_pour_tester ; Sans majuscules ni espaces"
cat ~/mal-project/anime_template >> ~/mal-project/sources/anime-list
echo -n "Mal-Database ->"
read ${titre}
echo "processing..."
sed -i "s/{titre}/${titre}/" ~/mal-project/sources/anime-list
В Вашем сценарии существует две главных проблемы.
считать что-то из stdin и поместить его в названную переменную titre
Вам нужно
read titre
(без предыдущего $
). Это поместит Ваш вход в переменную $titre
.
Заменять литеральное слово titre
с содержанием переменной $titre
Вам нужно
sed -i "s/titre/$titre/" ~/mal-project/sources/anime-list
Кюри (${titre}
по сравнению с. $titre
) только необходимы, чтобы ясно дать понять, где переменная заканчивается, если ситуация является ambigious. Полагайте, что Вы хотите заменить литерал titre
с содержанием переменной $titre
плюс текст deux
. Наивный подход был бы
s/titre/$titredeux/
Но здесь titre
ничем не был бы заменен (пустая строка), потому что нет никакой переменной $titredeux
. Следовательно, пишем мы
s/titre/${titre}deux/
вместо этого, чтобы ясно дать понять, что переменная на самом деле справедлива $titre
.