【发布时间】:2015-03-31 15:29:27
【问题描述】:
我正在尝试使用数组来定义要使用 sed 替换的行;我可以使用行号的变量来删除行,但我无法让 sed 使用该变量来定义要写入的行号。问题似乎存在于插入行中。如何将数组的值作为行号传递给 sed?
#!/bin/bash
lineNum=$(sed -n '/max_allowed_packet/=' /etc/mysql/my.cnf)
IFS= #There's a space as the delimiter#
ary=($lineNum)
#for key in "${!ary[@]}";
# do
# sed -i '$ary[$key]'d /etc/mysql/my.cnf;
# #The folllowing line errors#
# sed -i "'$ary[$key]'imax_allowed_packet = 32M" /etc/mysql/my.cnf;
# #The above line errors#
#done
#for val in "${ary[@]}";
# do
# sed -i "${val}d" /etc/mysql/my.cnf;
# sed -i "${val}imax_allowed_packet = 32M" /etc/mysql/my.cnf;
# done
for val in "${ary[@]}";
do
sed -i "${val}s/.*/imax_allowed_packet = 32M" /etc/mysql/my.cnf";
done
对于脚本的第一节,我得到以下输出: 错误:sed:-e 表达式 #1,字符 1:未知命令:`''
对于第二节,我得到以下输出:
sed:-e 表达式#1,字符 3:未知命令:
'
sed: -e expression #1, char 3: unknown command:
'
对于第三节,我得到以下输出: ./test.sh:第 22 行:在寻找匹配的“”时出现意外的 EOF ./test.sh:第 24 行:语法错误:文件意外结束
编辑,将 sed 命令重写为 sed -i "${ary[$key]}" 会生成以下错误输出:sed: -e expression #1, char 3: unknown command: `
【问题讨论】:
-
欢迎来到 Stack Overflow!这个问题的格式很好,但我认为如果你真的添加一个问题(以问号结尾的句子)会更好。