I try to make simple pipeline
on Jenkins
to remove files from few directories time to time. I decided not to create python
script with Jenkinsfile
as new project, instead of it I try to define new pipeline
script in Jenkins
job.
pipeline {
agent any
stages {
stage('Check virtualenv') {
steps {
sh """
rm -r /mnt/x/some/directory/Problem\ 1.0/path
"""
}
}
}
}
And I got an error WorkflowScript: 4: unexpected char: '\'
. How can I use path with whitespace on it without using backslash? Any other ideas how define path?
If your intent is to have literal backslashes in the resulting string, you need to escape the backslashes. That is, use a double-backslash ( \\ ) to substitute for one literal backslash.
You need to escape twice, once the quote for the shell with a slash, and once that slash with a slash for groovy itself.
IntelliJ can be configured to parse Jenkinsfile as a regular Groovy file, as explained in this question or this article. This allows to use standard Groovy formatting and syntax check. However, you might want to consider using Replay Pipeline functionality in your Jenkins instance instead.
On Linux, BSD, and Mac OS (Unix-like) systems, the sh step is used to execute a shell command in a Pipeline.
The '\'
character is a special character in Groovy. If you tried to compile this kind of code with the normal Groovy compiler, it would give you a better error message. The easiest way to handle it would be to escape it:
"""
rm -r /mnt/x/some/directory/Problem\\ 1.0/path
"""
You can modify the shell command as follows:
sh """
rm -r /mnt/x/some/directory/Problem""" + """ 1.0/path"""
Provide space before 1.0 as required. Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With