따라서 다음 코드가 있습니다.
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