String 如何摆脱复杂的盐串?
我想在一个系统网络上使用Salt状态来更改String 如何摆脱复杂的盐串?,string,escaping,salt-stack,String,Escaping,Salt Stack,我想在一个系统网络上使用Salt状态来更改PROMPT\u命令,但我还没有找到正确的字符串转义策略。提示命令为: PROMPT_COMMAND='PS1="`if [[ \$? -eq "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi`\! \[\033[36m\]\u@\h \[\033[33m\]\W \[\033[0m\]$ "' 首先,我尝试: /etc/bash.bashrc: file.ap
PROMPT\u命令
,但我还没有找到正确的字符串转义策略。提示命令为:
PROMPT_COMMAND='PS1="`if [[ \$? -eq "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi`\! \[\033[36m\]\u@\h \[\033[33m\]\W \[\033[0m\]$ "'
首先,我尝试:
/etc/bash.bashrc:
file.append:
- text:
- PROMPT_COMMAND='PS1="`if [[ \$? -eq "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi`\! \[\033[36m\]\u@\h \[\033[33m\]\W \[\033[0m\]$ "'
但州政府不会编译。通过引用字符串并转义其中的嵌套实例,我又尝试了两次(一次使用单引号,另一次使用双引号)。两人都没有成功。然后我将该指令放入文本文件(bashrc.txt
)并尝试:
/etc/bash.bashrc:
file.append:
- source: salt://_fragments/bashrc.txt
但这也破坏了渲染系统,尽管您会注意到我故意省略了-template:jinja
参数
通过Salt或Jinja是否有其他的转义机制可以抵抗这个特别可怕的字符串中出现的无数嵌套的勾号、引号和反斜杠?您尝试过这个吗
/etc/bash.bashrc:
file.append:
- text: |
PROMPT_COMMAND='PS1="`if [[ \$? -eq "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi`\! \[\033[36m\]\u@\h \[\033[33m\]\W \[\033[0m\]$ "'
可接受答案的另一种选择是使用jinja2标签:
{% raw %}
string
{% endraw %}
不,我还没试过这个技巧。它在什么地方有记录吗?它看起来像一个没有名字的jinja筛选器。@Chris这实际上是纯YAML格式。有关更多信息,请参阅。