파일에서 일치하는 줄을 제거하면 작동하지 않습니다.

파일에서 일치하는 줄을 제거하면 작동하지 않습니다.

따라서 다음 코드가 있습니다.

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

            fi
        done < mailinglist

읽은 줄이 내 변수(문자열)와 일치하면 전체 줄이 삭제됩니다.

작동하지 않을 때 플래그로 테스트했습니다.-엑스, 패턴을 찾아 if 루프에 들어가고 sed 명령도 실행하지만 줄은 그대로 남아 있습니다.

(스크립트에서 "메일링 리스트" 파일을 만들었기 때문에 쓰기 권한이 없을 수도 있다고 생각했지만 확인해보니 권한이 있는 것으로 나타났습니다. 기본적으로 아무것도 변경하지 않았습니다. 이에 대한 내용은 스크립트 권한에서 확인하세요).

나는 sed 명령이 정확하다고 생각합니다(파일을 편집하고 즉시 저장해야 합니다). 도와주세요?

답변1

이와 같은 작업은 잘 작동합니다. 작은 따옴표 대신 큰 따옴표를 사용하세요. 나는 일을 복잡하게 만드는 경향이 있다.

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

            fi
        done < mailinglist

관련 정보