1

while ループを bash スクリプトに実行しようとしていますが、引数に変数を挿入しようとしたときに 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それ以外の場合、シェルは変数を探して$xmおり、$y

于 2015-09-02T17:30:39.113 に答える