从昨天开始,我一直试图在我的脚本中运行一个名为“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
答案1
您的脚本中有两个主要问题。
从 stdin 读取一些内容并将其放入
titre
名为read titre
(前面没有
$
)。这会将您的输入放入变量 中$titre
。titre
要用变量的内容替换文字,$titre
您需要sed -i "s/titre/$titre/" ~/mal-project/sources/anime-list
只有在情况不明确时,才需要使用花括号(${titre}
vs. )来明确变量的结束位置。假设您想用变量的内容替换文字$titre
titre
$titre
加文本deux
。最简单的方法是
s/titre/$titredeux/
但这里titre
将被替换为空字符串,因为没有变量$titredeux
。因此,我们写
s/titre/${titre}deux/
而是要明确变量实际上只是$titre
。