Невозможно избежать знака доллара на ресурсе ruby_block
Я пишу рецепт шеф-повара, где запускается команда 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.
1 ответ
Так как command
команда bash, вам нужно $
знак, который оценивается в оболочке как переменная.
добавить двойную обратную косую черту перед $
, то есть \\$