在shell脚本中向变量添加空格

时间:2013-02-19 14:17:35

标签: shell sh spaces

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

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

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

2 个答案:

答案 0 :(得分: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(...)

这是(不是那么)极好的word splitting

的规则

使用的另一种解决方案:

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

答案 1 :(得分:0)

您最终对SERVERS做了什么?而不是尝试建立一个多行字符串,这样的事情可能会更好:

for i in $(seq 1 5); do
    echo "     -server$(printf "%03d" $i).$URL"
done >> file