shスクリプトからyaml設定ファイルを作成したい。したがって、次のような変数に複数のスペースを追加する必要があります。
SERVERS=""
for i in $(seq 1 5); do
SERVERS="$SERVERS -server`printf "%03d" $i`.$URL\n"
done
ただし、スペースは1つのスペースに縮小されます。スペースが置き換えられていないことを確認するにはどうすればよいですか?
エコーするときに二重引用符を使用するのを忘れたのではないかと思います$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を使用した別のソリューション:
perl -le 'for (1..5) { print " -server$_"}' | tee -a file.yaml
またはawkを使用:
awk 'BEGIN{for (i=1; i<=5; i++) print " -server"++c}' |
tee -a file.yaml
最終的に何をしますSERVERS
か?複数行の文字列を作成しようとするよりも、次のような方がよい場合があります。
for i in $(seq 1 5); do
echo " -server$(printf "%03d" $i).$URL"
done >> file