Thanks Paul.
After switching to ''' and moving the EOF marker to the very beginning of
the line ( yep I know I break the indent), but I don't like warnings like
script.sh: line 16: warning: here-document at line 10 delimited by
end-of-file (wanted `EOF')
Next I will try using csv and https parser to do the stuff better.
Thank you and the community!
Regards,
Dimitar

На вт, 24.03.2020 г. в 15:43 Paul King <pa...@asert.com.au> написа:

> $ in Groovy double quoted strings indicates the start of a placeholder, so
> you are expecting Groovy to supply the values for things like ${CURL_OPTS}.
> I suspect you want the shell environment to replace those. So you can
> either use the triple single quoted string (exactly what it is intended
> for) or you can escape each $, e.g. \$.
> The error is for expressions like $2 which isn't a valid Groovy variable
> name so not suitable for replacement.
>
> On Tue, Mar 24, 2020 at 11:27 PM Dimitar Vassilev <
> dimitar.vassi...@gmail.com> wrote:
>
>> Greetings all,
>> Hope you are well and safe. I will need some pointers how to properly
>> escape the following piece of code into double quoted multi line shell step
>> ```
>> #!/usr/bin/env bash
>> CURR_BL="foo_200227_203942"
>> HUB_URL="https://baz-baz.com:8045";
>>
>> SEARCH_CSV_URL="${HUB_URL}/project_search.csv?query="${CURR_BL}"&scope=all"
>> CURL_OPTS="-s"
>> TTL_PRJ="$(curl "${CURL_OPTS}" ${SEARCH_CSV_URL} | awk -F , '{print $2}'|
>> wc -l)"
>> FIN_PRJ="$(curl "${CURL_OPTS}" ${SEARCH_CSV_URL} | awk -F , '{print $2}'|
>> grep Finished | wc -l)"
>> SUCC_RATE="$(awk -v succ_prj="${FIN_PRJ}" -v tl_prj="${TTL_PRJ}" 'BEGIN {
>> print int(( succ_prj / tl_prj )*100) }')"
>> LOG_PLACE="/foo/baz"
>> APPL_NAME="foobar"
>> CURR_VIEW="foo_200227_203942_seafood_int"
>>
>> cd "${LOG_PLACE}/${APPL_NAME}/${CURR_VIEW}"/;
>> cat "${LOG_PLACE}/${APPL_NAME}/${CURR_VIEW}"/.build_[0-9]*/*.err >>
>> "${CURR_VIEW}_err.log"
>> mail -a "${CURR_VIEW}_err.log" -s "Code quality build stats and error
>> logs attached for ${CURR_VIEW}" m...@me.em << EOF
>> ================Printing Code quality build stats:==================
>>   Total projects for ${CURR_BL} is: ${TTL_PRJ}
>>   Finished projects for ${CURR_BL} is: ${FIN_PRJ}
>>   Success rate in percentage is: ${SUCC_RATE}
>> EOF
>> ```
>> When running the above script as Jenkins shell step with """ I get the
>> error
>> illegal string body character after dollar sign;
>>                solution: either escape a literal dollar sign "\$5" or
>> bracket the value expression "${5}" @ line 13, column 86.
>>                earch.csv?query="${CURR_BL}"&scope=a
>>
>> Sample code  with the error trigger is included
>> ```
>> pipeline {
>>     agent {label 'baz'}
>>     stages {
>>        stage('Test') {
>>          steps {
>>             script{
>>                    sh"""#!/usr/bin/env bash
>>                    CURR_BL="foo_200227_203942"
>>                    HUB_URL="https://baz-baz.com:8045";
>>
>>  SEARCH_CSV_URL="${HUB_URL}/project_search.csv?query="${CURR_BL}"&scope=all"
>>                    CURL_OPTS="-s"
>>                    TTL_PRJ="$(curl "${CURL_OPTS}" ${SEARCH_CSV_URL} | awk
>> -F , '{print $2}'| wc -l)"
>>                    FIN_PRJ="$(curl "${CURL_OPTS}" ${SEARCH_CSV_URL} | awk
>> -F , '{print $2}'| grep Finished | wc -l)"
>>                    SUCC_RATE="$(awk -v succ_prj="${FIN_PRJ}" -v
>> tl_prj="${TTL_PRJ}" 'BEGIN { print int(( succ_prj / tl_prj )*100) }')"
>>                    LOG_PLACE="/foo/baz"
>>                    APPL_NAME="foobar"
>>                    CURR_VIEW="foo_200227_203942_seafood_int"
>>                    cd "${LOG_PLACE}/${APPL_NAME}/${CURR_VIEW}"/;
>>                    cat
>> "${LOG_PLACE}/${APPL_NAME}/${CURR_VIEW}"/.build_[0-9]*/*.err >>
>> "${CURR_VIEW}_err.log"
>>                    mail -a "${CURR_VIEW}_err.log" -s "Code quality build
>> stats and error logs attached for ${CURR_VIEW}" m...@me.em << EOF
>>                    ================Printing Code quality build
>> stats:==================
>>                      Total projects for ${CURR_BL} is: ${TTL_PRJ}
>>                      Finished projects for ${CURR_BL} is: ${FIN_PRJ}
>>                      Success rate in percentage is: ${SUCC_RATE}
>>                    EOF
>>                    """
>>                     }
>>                   }
>>                 }
>>               }
>>             }
>> ```
>> So it seems I can't make groovy enough groovy using """. With ''' it
>> works fine. However I prefer to educate myself if possible. Thanks for
>> making this happen.
>>
>

Reply via email to