簡體   English   中英

如何將帶有雙斜杠的屬性值傳遞給模板

[英]How to pass attribute value with double slash to a template

我正在嘗試開發將同時支持Windows和Linux平台的食譜。 使用模板時出現問題。 因此,基本上,我正在嘗試放置一個shell腳本,該腳本將具有帶有路徑的export命令。 但是我無法在Windows的Shell腳本上獲得確切的值。

屬性:

root_path = value_for_platform(
  'windows' => { 'default' => "D:\\" },
  'default' => '/opt'
)
xyz_path = value_for_platform(
  'windows' => { 'default' => "#{root_path}xyz_app\\tool\\bin\\xyz.bat" },
  'default' => "#{root_path}/xyz_app//tool//bin//xyz"
)

食譜:

template File.join(root_path, '/tmp/xyz_path.sh') do
  source 'xyz_path.sh.erb'
  mode '0755'
  variables({
    :xyz_path => xyz_path
  })
end

模板

#!/bin/bash

export xyz_path = <%= @xyz_path %>

在Windows上的期望

#!/bin/bash

export xyz_path = D:\\xyz_app\\tool\\bin\\xyz.bat

Windows上的現實

#!/bin/bash

export xyz_path = D:\xyz_app\tool\bin\xyz.bat

使用4個反斜杠即可獲得所需的內容。

root_path = value_for_platform(
  'windows' => { 'default' => "D:\\\\" },
  'default' => '/opt'
)
xyz_path = value_for_platform(
  'windows' => { 'default' => "#{root_path}xyz_app\\\\tool\\\\bin\\\\xyz.bat" },
  'default' => "#{root_path}/xyz_app//tool//bin//xyz"
)

由於反斜杠是轉義字符,因此第一個反斜杠將轉義第二個斜杠,因此您需要重復兩次以在輸出中獲得兩個反斜杠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM