如果变量被双引号引起来,并且它包含一个\n
$test="hello\nworld"
file { '/tmp/hello':
content => $test
}
然后会创建一个新行:
/tmp/hello
hello
world
问题
如果由于 hiera 输入或 regsubst 结果导致输入没有双引号该怎么办:
$test2=hiera("hiera::input")
file { '/tmp/hello':
content => $test2
}
结果是:
hello\nworld
尝试解决问题
假设对内容变量使用双引号可以解决这个问题。但都不是:
file { '/tmp/hello':
content => "$test2"
}
也不:
file { '/tmp/hello':
content => "\"$test2\""
}
解决了这个问题。后者导致:
"hello\nworld"
第二次尝试
阅读后又尝试了一次StackOverflow 上的这个答案。
hiera.yaml
---
bla: haha\nblabla
清单文件
$test=hiera('bla')
$quoted = regsubst($test, '(.*)', '"\1"')
file { '/tmp/hello':
content => $quoted
}
结果是:
"haha\nblabla"