簡體   English   中英

ruby_block廚師資源中無法逃脫美元符號

[英]Unable to escape dollar sign in ruby_block chef resource

我正在寫一個運行sql命令的廚師食譜。

ruby_block 'SQL command' do
  block do
    report = open(ReportFile,'a')
    command = %Q( ssh -o StrictHostKeyChecking=no root@#{dbHost2} 'su - #{oraSidUser} -c "#{oracleHome}/bin/sqlplus / as sysdba <<EOF
SELECT FLASHBACK_ON FROM V$DATABASE;
EOF"' )
    commandObj = Mixlib::ShellOut.new(command, :timeout => 60)
    commandObj.run_command()
    report.puts("Command:#{command}\nOutput:#{commandObj.stdout}\nError:#{commandObj.stderr}\nExit code:#{commandObj.exitstatus}")
  end
end

但是,當我檢查日志時,它不會運行SQL命令。 它運行

SQL> SELECT FLASHBACK_ON FROM V
                         *
ERROR at line 1:
ORA-00942: table or view does not exist

似乎正在嘗試放入$ DATABASE的值。 我試過使用反斜杠轉義$。 我用了雙美元符號。 我試過將SQL放在變量中,但是它仍然無法運行正確的SQL。 有逃脫美元符號的其他方法嗎?

編輯:使用雙反斜杠或三反斜杠失敗,

Error:DATABASE: Undefined variable.

由於該command是bash命令,因此需要轉義$符號,該符號在shell中作為變量進行評估。

$之前附加雙反斜杠,即\\\\$

暫無
暫無

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

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