Sobre um script em .sh [closed]

-3

desde ontem eu venho tentando executar um comando no meu script chamado sed ele processa um texto e não me diz que há algum erro, mas quando eu verifico dentro do arquivo ele apenas suprime o texto que estava deveria ser substituído.

Alguém pode me ajudar com isso?

Aqui está o meu código:

#!/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
    
por Guillaume Girardin Guiguimo 23.02.2018 / 22:31

1 resposta

3

Existem dois problemas principais no seu script.

  1. para ler algo do stdin e colocá-lo em uma variável chamada titre que você precisa

    read titre
    

    (sem um anterior $ ). Isso colocará sua entrada em a variável $titre .

  2. Para substituir a palavra literal titre pelo conteúdo da variável $titre que você precisa

    sed -i "s/titre/$titre/" ~/mal-project/sources/anime-list
    

Os curlies ( ${titre} vs. $titre ) são necessários apenas para deixar claro onde uma variável termina se a situação for ambígua. Considere que você deseja substituir o literal titre pelo conteúdo da variável $titre mais pelo texto deux . A abordagem ingênua seria

s/titre/$titredeux/

Mas aqui titre seria substituído por nada (string vazia) porque não há variável $titredeux . Por isso, escrevemos

s/titre/${titre}deux/

para deixar claro que a variável é na verdade apenas $titre .

    
por PerlDuck 23.02.2018 / 23:01