컨테이너 파일의 특정 줄에 변수 쓰기

컨테이너 파일의 특정 줄에 변수 쓰기

Docker 컨테이너의 31번째 줄에 있는 파일에 변수를 작성해야 합니다. 나는 bash 스크립트를 사용한다

내 명령은 다음과 같습니다

txt=" 
log-bin
server_id=1"
docker exec $container sed -i "31i\
$txt /etc/mysql/my.cnf

다음 오류가 발생합니다.

sed: -e expression #1, char 8: extra characters after command

내 파일에 아무것도 추가되지 않았습니다...

도와주세요?

답변1

나는 도커 컨테이너에 대해 아무것도 모르지만 특정 줄 앞에 변수의 내용을 삽입하려는 경우 다음 GNU sed 명령을 사용할 수 있습니다.

VAR="$txt" sed -i.bk '31{h;s:.*:printf "%s" "$VAR":e;G}' /etc/mysql/my.cnf

안전상의 이유로 위 명령은 확장자가 .bk.

답변2

답변해 주셔서 감사합니다. 잘 작동하지 않습니다.

실제로는 빈 줄을 삽입합니다.

내가 사용하려고 하면

VAR="$txt" 
sed -i.bk '31{h;s:.*:printf "%s" "hello world":e;G}' /etc/mysql/my.cnf

효과가있다

내가 사용하려고 하면

VAR="$txt" 
sed -i.bk '31{h;s:.*:printf "%s" "$VAR":e;G}' /etc/mysql/my.cnf

방금 빈 줄이 새로 생겼어요...

답변3

아 잠깐만요, 그건 단지 "그리고"의 문제일 뿐이에요

이것은 올바른 구문입니다

VAR="$txt"
docker exec  $container sed -i.bk "31{h;s:.*:printf '%s' '$VAR':e;G}" $path

sed 명령은 큰따옴표 ""로 묶어야 하며, 실제 매개변수는 작은따옴표 ''로 묶어야 합니다.

모든 파트너에게 감사드립니다

관련 정보