О скрипте в .sh [закрыто ]

со вчерашнего дня я пытаюсь запустить в моем скрипте команду 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
-3
задан 23 February 2018 в 14:38

1 ответ

В Вашем сценарии существует две главных проблемы.

  1. считать что-то из stdin и поместить его в названную переменную titre Вам нужно

    read titre
    

    (без предыдущего $). Это поместит Ваш вход в переменную $titre.

  2. Заменять литеральное слово 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.

3
ответ дан 30 October 2019 в 09:32

Другие вопросы по тегам:

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