如何将 2 变量插入 ed 命令参数?
How Insert 2 variable into ed command argument?
我正在尝试在 bash 脚本中执行一个 while 循环,但是当我试图在它的参数中插入一个变量时,我不知道 ed(文本编辑器)发生了什么。如您所见,我也在使用循环,但问题似乎出在 ed 命令中使用变量。
这是脚本代码(很明显是 awk 和 sed 程序):
#!/bin/bash
x=1
y=5
SCRIPTDIR=~/bin
awk 'NR % 2==0' test > output1
awk -v n=5 '1; NR % n == 0 {print ""}' output1 > output1b
sed -i 's/\r//' output1b
while [ $x -le 50 ]; do
ed -s output1b <<< $"$xm$y\nw"
let x=x+5
let y=y+5
done
ed -s output1b <<< $"$xm$y\nw"
应该是
ed -s output1b <<ED_COMMANDS
${x}m$y
w
ED_COMMANDS
或
printf "%s\n" "${x}m$y" "w" | ed -s output1b
$"..."
形式不会将 \n
转换为换行符,$'...'
形式不会扩展变量。
此外,请注意 ${x}m$y
中的大括号,否则 shell 正在寻找变量 $xm
和 $y
我正在尝试在 bash 脚本中执行一个 while 循环,但是当我试图在它的参数中插入一个变量时,我不知道 ed(文本编辑器)发生了什么。如您所见,我也在使用循环,但问题似乎出在 ed 命令中使用变量。
这是脚本代码(很明显是 awk 和 sed 程序):
#!/bin/bash
x=1
y=5
SCRIPTDIR=~/bin
awk 'NR % 2==0' test > output1
awk -v n=5 '1; NR % n == 0 {print ""}' output1 > output1b
sed -i 's/\r//' output1b
while [ $x -le 50 ]; do
ed -s output1b <<< $"$xm$y\nw"
let x=x+5
let y=y+5
done
ed -s output1b <<< $"$xm$y\nw"
应该是
ed -s output1b <<ED_COMMANDS
${x}m$y
w
ED_COMMANDS
或
printf "%s\n" "${x}m$y" "w" | ed -s output1b
$"..."
形式不会将 \n
转换为换行符,$'...'
形式不会扩展变量。
此外,请注意 ${x}m$y
中的大括号,否则 shell 正在寻找变量 $xm
和 $y