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.