1

我想从 sh 脚本创建一个 yaml 配置文件。所以我需要向这样的变量添加多个空格:

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

但是空间减少到只有一个空间。如何确保不替换空格?

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 回答