ファイルから一致する行を削除すると機能しません。

ファイルから一致する行を削除すると機能しません。

したがって、次のコードがあります。

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

おすすめ記事