.env라는 파일이 있습니다.
이 파일에는 MYIP= 변수가 있고 MYIP= 앞에 공용 IP를 입력해야 합니다.
이 공개 내용을 publicip.txt라는 다른 파일에 넣었습니다.
publicip 파일의 출력을 사용하고 앞에 MYIP=를 추가하고 싶습니다.
MYIP=을 제거하고 다음 명령을 사용해 보았습니다.
echo "MYIP=" | cat - publicip >> .env
하지만 파일에서 MYIP= 177.XX.XX.XX라는 정보를 확인했습니다.
같은 줄에 있지 않습니다. 누가 날 도울 수 있죠?
답변1
이를 수행하는 방법에는 여러 가지가 있습니다. cat
덜 일반적인 옵션 중 하나이지만 여전히 완전히 실행 가능합니다. 당신은 거의 그것을 가지고 있지만 echo
개행 문자가 있습니다. 플래그를 사용하여 이를 억제할 수 있습니다 -n
.
echo -n "MYIP=" | cat - publicip >> .env
답변2
.env 파일에 보존하려는 다른 콘텐츠가 포함되어 있다고 가정하면 한 가지 접근 방식은 MYIP 할당을 Perl로 바꾸는 것입니다.
perl -pe 's/MYIP=.*/MYIP='`cat publicip`'/' -i .env
텍스트 도구( perl
, cat
, sed
, )를 사용하는 awk
모든 유사한 솔루션에서는 잘못된 형식으로 인해 손상되기 쉽기 publicip
때문에 파일을 완전히 제어할 수 있는지 확인하십시오. 안전한 환경에서 이러한 모노 라이너를 사용하도록 주의하십시오. 그렇지 않으면 적절하게 고정하는 것이 거의 불가능하고 상황이 이상해질 수 있습니다.
이러한 안전 예방 조치를 취하는 한 가지 방법은 .env
파일을 제자리에서 수정하지 않고 일부 템플릿을 사용하고 이를 병합/교체하여 출력 파일을 만드는 것입니다. 악의적이거나 잘못된 일이 발생하는 경우(또는 파일이 잘리는 여유 공간이 없는 경우 등) 도움이 되지 않지만 최소한 템플릿 파일 내용을 잃지 않으므로 복구할 수 있습니다. .env
.