Search code examples
bashhttp-redirectrundeck

How to redirect long string with single/double quotes var in Rundeck?


thank you for taking time reading this question.

I've a Rundeck job with multiple steps. Basically, step 1 and 2 is fetching a long string which is under ' '. Example: 'This is a long string.. and is also under "double quotes" '. -> This variable is stored as the following form: @option.mylongstring@

Third step of my Rundeck job is failing because I'm having issues with single and multiple quotes in my string. I want to extract specific values from that long string

My solution was to send the content of @option.mylongstring@ in a temp file and apply sed to convert single quotes into double quotes (sed "s/'/\"/g") and from there, extract the information that I need.

Anyway, seems that the redirection is not happening in Rundeck: echo @option.mylongstring@ &> $TEMPFILE is doing nothing, generating an empty file.

Anyone faced the same issue?


Solution

  • Using inline-script works without problems, let me share the job definition example:

    <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>
    

    Using an option:

    <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>