如何在 Rundeck 中使用 single/double 引号 var 重定向长字符串?
How to redirect long string with single/double quotes var in Rundeck?
感谢您花时间阅读这个问题。
我有一个包含多个步骤的 Rundeck 作业。基本上,第 1 步和第 2 步是获取 ' '
下的长字符串。例子:
'This is a long string.. and is also under "double quotes" '
。 -> 该变量存储为以下形式:@option.mylongstring@
我的 Rundeck 作业的第三步失败了,因为我的字符串中有单引号和多引号问题。我想从那个长字符串中提取特定值
我的解决方案是将 @option.mylongstring@
的内容发送到一个临时文件中,然后应用 sed 将单引号转换为双引号 (sed "s/'/\"/g"
),然后从那里提取我需要的信息。
无论如何,重定向似乎没有发生在 Rundeck 中:echo @option.mylongstring@ &> $TEMPFILE
什么都不做,生成一个空文件。
有人遇到同样的问题吗?
使用内联脚本没有问题,让我分享作业定义示例:
<joblist>
<job>
<defaultTab>nodes</defaultTab>
<description></description>
<executionEnabled>true</executionEnabled>
<id>5e7123ce-c9b7-4bfa-a0e8-6484a9bd7c4f</id>
<loglevel>INFO</loglevel>
<name>LongStringExample</name>
<nodeFilterEditable>false</nodeFilterEditable>
<plugins />
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<fileExtension>.sh</fileExtension>
<script><![CDATA[echo 'hello "world"' > myfile.txt]]></script>
<scriptargs />
<scriptinterpreter>/bin/bash</scriptinterpreter>
</command>
</sequence>
<uuid>5e7123ce-c9b7-4bfa-a0e8-6484a9bd7c4f</uuid>
</job>
</joblist>
使用选项:
<joblist>
<job>
<context>
<options preserveOrder='true'>
<option name='opt1' />
</options>
</context>
<defaultTab>nodes</defaultTab>
<description></description>
<executionEnabled>true</executionEnabled>
<id>22d7286f-7be9-4aaf-92ae-8e5bf5277d67</id>
<loglevel>INFO</loglevel>
<name>AnotherLongStringExample</name>
<nodeFilterEditable>false</nodeFilterEditable>
<plugins />
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<fileExtension>.sh</fileExtension>
<script><![CDATA[echo 'this is another "@option.opt1@"' > another_file.txt]]></script>
<scriptargs />
<scriptinterpreter>/bin/bash</scriptinterpreter>
</command>
</sequence>
<uuid>22d7286f-7be9-4aaf-92ae-8e5bf5277d67</uuid>
</job>
</joblist>
感谢您花时间阅读这个问题。
我有一个包含多个步骤的 Rundeck 作业。基本上,第 1 步和第 2 步是获取 ' '
下的长字符串。例子:
'This is a long string.. and is also under "double quotes" '
。 -> 该变量存储为以下形式:@option.mylongstring@
我的 Rundeck 作业的第三步失败了,因为我的字符串中有单引号和多引号问题。我想从那个长字符串中提取特定值
我的解决方案是将 @option.mylongstring@
的内容发送到一个临时文件中,然后应用 sed 将单引号转换为双引号 (sed "s/'/\"/g"
),然后从那里提取我需要的信息。
无论如何,重定向似乎没有发生在 Rundeck 中:echo @option.mylongstring@ &> $TEMPFILE
什么都不做,生成一个空文件。
有人遇到同样的问题吗?
使用内联脚本没有问题,让我分享作业定义示例:
<joblist>
<job>
<defaultTab>nodes</defaultTab>
<description></description>
<executionEnabled>true</executionEnabled>
<id>5e7123ce-c9b7-4bfa-a0e8-6484a9bd7c4f</id>
<loglevel>INFO</loglevel>
<name>LongStringExample</name>
<nodeFilterEditable>false</nodeFilterEditable>
<plugins />
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<fileExtension>.sh</fileExtension>
<script><![CDATA[echo 'hello "world"' > myfile.txt]]></script>
<scriptargs />
<scriptinterpreter>/bin/bash</scriptinterpreter>
</command>
</sequence>
<uuid>5e7123ce-c9b7-4bfa-a0e8-6484a9bd7c4f</uuid>
</job>
</joblist>
使用选项:
<joblist>
<job>
<context>
<options preserveOrder='true'>
<option name='opt1' />
</options>
</context>
<defaultTab>nodes</defaultTab>
<description></description>
<executionEnabled>true</executionEnabled>
<id>22d7286f-7be9-4aaf-92ae-8e5bf5277d67</id>
<loglevel>INFO</loglevel>
<name>AnotherLongStringExample</name>
<nodeFilterEditable>false</nodeFilterEditable>
<plugins />
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<fileExtension>.sh</fileExtension>
<script><![CDATA[echo 'this is another "@option.opt1@"' > another_file.txt]]></script>
<scriptargs />
<scriptinterpreter>/bin/bash</scriptinterpreter>
</command>
</sequence>
<uuid>22d7286f-7be9-4aaf-92ae-8e5bf5277d67</uuid>
</job>
</joblist>