1

shスクリプトからyaml設定ファイルを作成したい。したがって、次のような変数に複数のスペースを追加する必要があります。

SERVERS=""
for i in $(seq 1 5); do
    SERVERS="$SERVERS      -server`printf "%03d" $i`.$URL\n"
done

ただし、スペースは1つのスペースに縮小されます。スペースが置き換えられていないことを確認するにはどうすればよいですか?

4

2 に答える 2

2

エコーするときに二重引用符を使用するのを忘れたのではないかと思います$SERVER=)

SERVERS=""
for i in $(seq 1 5); do
    SERVERS="$SERVERS      -server$(printf "%03d" $i).$URL\n"
done
echo "$SERVER"

出力:

      -server001.\n      -server002.\n      -server003.\n      -server004.\n(...)

それが(そうではない)素晴らしい単語分割のルールです


を使用した別のソリューション:

perl -le 'for (1..5) { print "   -server$_"}' | tee -a file.yaml

またはを使用:

awk 'BEGIN{for (i=1; i<=5; i++) print "   -server"++c}'  |
    tee -a file.yaml
于 2013-02-19T14:20:43.047 に答える
0

最終的に何をしますSERVERSか?複数行の文字列を作成しようとするよりも、次のような方がよい場合があります。

for i in $(seq 1 5); do
    echo "     -server$(printf "%03d" $i).$URL"
done >> file
于 2013-02-19T14:28:12.547 に答える