我想从 sh 脚本创建一个 yaml 配置文件。所以我需要向这样的变量添加多个空格:
SERVERS=""
for i in $(seq 1 5); do
SERVERS="$SERVERS -server`printf "%03d" $i`.$URL\n"
done
但是空间减少到只有一个空间。如何确保不替换空格?
我怀疑您在回显时忘记使用双引号$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