删除文件中的匹配行不起作用

删除文件中的匹配行不起作用

所以,我有这段代码:

while read line 
        do
            if [ $line = $maddr ] ;
            then
                sed -i '/${maddr}/d' mailinglist
                found=true
                break

            fi
        done < mailinglist

如果读取的行与我的变量(字符串)匹配,则删除整行。

当它不起作用时,我用标志测试了它-X,找到模式并进入 if 循环,它甚至执行 sed 命令,但该行保留在那里。

(我在脚本中创建了“邮件列表”文件,所以我想,也许它没有写权限,但我检查了它,据我所知,我确实有权限 - 我基本上没有更改任何内容关于脚本中的权限)。

我相信 sed 命令是正确的(我必须编辑文件并立即保存它)。你能帮助我吗?

答案1

像这样工作得很好,只是不使用单引号,而是使用双引号。我倾向于把事情复杂化。

while read line 
        do
            if [ $line = $maddr ] ;
            then
                sed -i "/$maddr/d" mailinglist
                found=true
                break

            fi
        done < mailinglist

相关内容