將變數寫入容器檔案的某一行

將變數寫入容器檔案的某一行

我需要將變數寫入 docker 容器中第 31 行的檔案中。

我的命令是:

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

我對 docker 容器一無所知,但如果您只想在某一行之前插入變數的內容,則可以使用以下 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 指令必須用雙引號 "" 引用,實習參數必須用單引號 '

感謝所有的夥伴

相關內容