![sed는 터미널에 올바른 파일을 출력하지만 새 파일에는 대체가 발생하지 않습니다.](https://linux55.com/image/106789/sed%EB%8A%94%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%20%EC%98%AC%EB%B0%94%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B6%9C%EB%A0%A5%ED%95%98%EC%A7%80%EB%A7%8C%20%EC%83%88%20%ED%8C%8C%EC%9D%BC%EC%97%90%EB%8A%94%20%EB%8C%80%EC%B2%B4%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
명령줄에서 아래 쉘 스크립트를 실행하면 복사된 파일이 화면에 출력되고 교체가 올바르게 수행된 것을 볼 수 있지만 생성된 새 파일에서는 여전히 원본 파일의 원본 파일 내용이 표시됩니다. . html - 새 파일에 측면을 저장할 때 내가 뭘 잘못하고 있는 걸까요?
# other relevant vars above #
cp original.html MobileApp/www/index.html
sed -E'' "s#MOBILE_APP_API_URL#\"$mobile_app_api_url\"#g;
s#MOBILE_APP_MEDIA_URL#\"$mobile_app_media_url\"#g;
s#MOBILE_APP_ENVIRONMENT#\"$environment\"#g" MobileApp/www/index.html
// 줄 시작 부분에 sed -i를 사용하면 예상대로 작동하지만 이식성 때문에 -i 매개변수를 사용하고 싶지 않습니다.
답변1
이 경우 나는 선택할 것입니다
sed -E -e "s#MOBILE_APP_API_URL#\"$mobile_app_api_url\"#g" \
-e "s#MOBILE_APP_MEDIA_URL#\"$mobile_app_media_url\"#g" \
-e "s#MOBILE_APP_ENVIRONMENT#\"$environment\"#g" \
original.html >MobileApp/www/index.html
이 -E
플래그는 인수를 사용하지 않으며 여러 -e
섹션을 사용하여 명령줄을 읽을 수 있는 덩어리로 나눌 수 있습니다.
cp
소스 파일을 처리하고 리디렉션을 사용하여 대상 파일에 직접 쓰기 때문에 이 과정을 완전히 건너뛸 수 있습니다 .