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

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

31번째 줄에서 docker 컨테이너에 있는 파일에 변수를 작성해야 합니다. 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 명령은 큰따옴표 ""로 묶어야 하고 인턴 인수는 작은따옴표 '

모든 친구에게 감사드립니다

관련 정보