我想从sh脚本创建一个yaml配置文件。所以我需要在变量中添加多个空格:
SERVERS=""
for i in $(seq 1 5); do
SERVERS="$SERVERS -server`printf "%03d" $i`.$URL\n"
done
但是空间只减少到一个空间。如何确保不替换空格?
答案 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的另一种解决方案:
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
答案 1 :(得分:0)
您最终对SERVERS
做了什么?而不是尝试建立一个多行字符串,这样的事情可能会更好:
for i in $(seq 1 5); do
echo " -server$(printf "%03d" $i).$URL"
done >> file