base64를 사용하여 업데이트해야 하는 JSON 속성이 있습니다. 프로세스는 다음과 같습니다.
prop_val=`base64 --wrap=0 < $prop_txt`
sed -i 's@"property_specific": ""@"property_specific": "'"${prop_val}"'"@g' $final_json
문제가 발생했습니다.line 22: /bin/sed: Argument list too long
Base64 문자열(한 줄)은 매우 깁니다. sed를 사용하지 않고 어떻게 속성을 업데이트할 수 있나요?
참고: 형식은 큰따옴표입니다.
고쳐 쓰다:
- 큰따옴표의 복잡성을 제거하려면 자리 표시자 고유 문자열을 만드세요.
- 시도했지만
sed -f
작동하지 않았습니다.
시험을 마친:
sed -i -f - $final_json << EOF; 's@placeHolder123456@'"${prop_val}"'@g'; EOF
실수:
line 27: warning: here-document at line 23 delimited by end-of-file (wanted `EOF')
line 28: syntax error: unexpected end of file
EOF
오류를 피하기 위해 함수에 넣으려고 시도했지만 성공하지 못했습니다. 기능:
update_prop_specific() {
sed -i -f - $1 << EOF
s@placeHolder123456@$2@g
EOF
}
제안?
답변1
결국 다른 파일을 설정하고 sed -i -f ....
함수 및 명시적 호출로 인해 기본 스크립트에서 해당 파일을 호출하면unexpected EOF