1

我正在尝试在 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
4

1 回答 1

4
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

于 2015-09-02T17:30:39.113 回答