厨师抱怨无效的 Unicode 转义
Chef complaints about invalid Unicode escape
我想在我的.bash_profile
中设置以下内容
bash_profile_content = %Q(
export EDITOR=vi
export ENV=#{role}
export PATH=$PATH:/usr/local/bin
export PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w [$ENV]$ "
)
file '/home/me/.bash_profile' do
cotent bash_profile_conent
end
Chef 抛出此错误:
==> Server-002: [2015-10-07T03:02:23+00:00] ERROR: Exception handlers complete
==> Server-002: Chef Client failed. 0 resources updated in 322.419863736 seconds
==> Server-002: [2015-10-07T03:02:23+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> Server-002: [2015-10-07T03:02:23+00:00] ERROR: /var/chef/cache/cookbooks/servers/recipes/_common_user.rb:67: invalid Unicode escape
==> Server-002: ...ian_chroot:+($debian_chroot)}\u@\h:\w [$ENV]$ "
==> Server-002: ...
显然厨师认为 @
字符用于 unicode 转义。
我想按原样使用 @
。我该如何解决这个错误?
这不是真正的问题,\u
才是。例如:
irb > "\u@"
SyntaxError: (irb):1: invalid Unicode escape
"\u@"
^
但是:
irb > "\u0611"
=> "ؑ"
请记住,%Q(...)
的行为类似于双引号字符串,因此适用所有常用的转义符(例如 \u
用于 Unicode)。添加更多反斜杠应该可以解决问题:
bash_profile_content = %Q(
export EDITOR=vi
export ENV=#{role}
export PATH=$PATH:/usr/local/bin
export PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w [$ENV]\$ "
)
我想在我的.bash_profile
中设置以下内容bash_profile_content = %Q(
export EDITOR=vi
export ENV=#{role}
export PATH=$PATH:/usr/local/bin
export PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w [$ENV]$ "
)
file '/home/me/.bash_profile' do
cotent bash_profile_conent
end
Chef 抛出此错误:
==> Server-002: [2015-10-07T03:02:23+00:00] ERROR: Exception handlers complete
==> Server-002: Chef Client failed. 0 resources updated in 322.419863736 seconds
==> Server-002: [2015-10-07T03:02:23+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> Server-002: [2015-10-07T03:02:23+00:00] ERROR: /var/chef/cache/cookbooks/servers/recipes/_common_user.rb:67: invalid Unicode escape
==> Server-002: ...ian_chroot:+($debian_chroot)}\u@\h:\w [$ENV]$ "
==> Server-002: ...
显然厨师认为 @
字符用于 unicode 转义。
我想按原样使用 @
。我该如何解决这个错误?
这不是真正的问题,\u
才是。例如:
irb > "\u@"
SyntaxError: (irb):1: invalid Unicode escape
"\u@"
^
但是:
irb > "\u0611"
=> "ؑ"
请记住,%Q(...)
的行为类似于双引号字符串,因此适用所有常用的转义符(例如 \u
用于 Unicode)。添加更多反斜杠应该可以解决问题:
bash_profile_content = %Q(
export EDITOR=vi
export ENV=#{role}
export PATH=$PATH:/usr/local/bin
export PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w [$ENV]\$ "
)