Groovy syntax not working with backslashes
up vote
0
down vote
favorite
I'm trying to use a backslash on the command bellow at groovy syntax:
find /path/folder-* -type f -iname "file*" -exec rm -f {} ;
When I try to build this command on a Jenkins pipeline give me an error about this syntax. Even before I do this command have a warning with red syntax on Jenkins form field saying unexpected char: ''.
What could I do for replace or fix error with this backslash ?
Groovy commands:
node ("instance") {
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance1/*
echo instance1;
scp 100.0.0.50:/var/log/file1.log /root/logfiles/instance1/file1.log;
scp 100.0.0.50:/var/log/file2.log /root/logfiles/instance1/file2.log;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance2/*
echo instance2;
scp 100.0.0.51:/var/log/file1.log /root/logfiles/instance2/file1.log;
scp 100.0.0.51:/var/log/file2.log /root/logfiles/instance2/file2.log;
'''
}
}
Notice: I have rm -f
for all instances at this moment. Will substitute all rm -f
to the find
command on the stage cleaning folders.
Tks in advance
bash find bash-scripting jenkins groovy
add a comment |
up vote
0
down vote
favorite
I'm trying to use a backslash on the command bellow at groovy syntax:
find /path/folder-* -type f -iname "file*" -exec rm -f {} ;
When I try to build this command on a Jenkins pipeline give me an error about this syntax. Even before I do this command have a warning with red syntax on Jenkins form field saying unexpected char: ''.
What could I do for replace or fix error with this backslash ?
Groovy commands:
node ("instance") {
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance1/*
echo instance1;
scp 100.0.0.50:/var/log/file1.log /root/logfiles/instance1/file1.log;
scp 100.0.0.50:/var/log/file2.log /root/logfiles/instance1/file2.log;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance2/*
echo instance2;
scp 100.0.0.51:/var/log/file1.log /root/logfiles/instance2/file1.log;
scp 100.0.0.51:/var/log/file2.log /root/logfiles/instance2/file2.log;
'''
}
}
Notice: I have rm -f
for all instances at this moment. Will substitute all rm -f
to the find
command on the stage cleaning folders.
Tks in advance
bash find bash-scripting jenkins groovy
this hybrid slash wont help you? ` ∖ `
– user902300
May 26 at 13:43
1
Could you please post your Groovy script (or Pipeline, or whatever it is that you're using to run that command)?
– jayhendren
May 29 at 15:57
Pasted on question body the groovy script. @jayhendren
– Marlon
May 30 at 9:27
Since the slash character is simply escaping the following one, it may be that you just need to remove ir.
– davidgo
May 30 at 9:35
1
@davidgo in this particular case the backslash is definitely necessary to ensure the semicolon is parsed by find and not the shell.
– jayhendren
May 30 at 17:19
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm trying to use a backslash on the command bellow at groovy syntax:
find /path/folder-* -type f -iname "file*" -exec rm -f {} ;
When I try to build this command on a Jenkins pipeline give me an error about this syntax. Even before I do this command have a warning with red syntax on Jenkins form field saying unexpected char: ''.
What could I do for replace or fix error with this backslash ?
Groovy commands:
node ("instance") {
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance1/*
echo instance1;
scp 100.0.0.50:/var/log/file1.log /root/logfiles/instance1/file1.log;
scp 100.0.0.50:/var/log/file2.log /root/logfiles/instance1/file2.log;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance2/*
echo instance2;
scp 100.0.0.51:/var/log/file1.log /root/logfiles/instance2/file1.log;
scp 100.0.0.51:/var/log/file2.log /root/logfiles/instance2/file2.log;
'''
}
}
Notice: I have rm -f
for all instances at this moment. Will substitute all rm -f
to the find
command on the stage cleaning folders.
Tks in advance
bash find bash-scripting jenkins groovy
I'm trying to use a backslash on the command bellow at groovy syntax:
find /path/folder-* -type f -iname "file*" -exec rm -f {} ;
When I try to build this command on a Jenkins pipeline give me an error about this syntax. Even before I do this command have a warning with red syntax on Jenkins form field saying unexpected char: ''.
What could I do for replace or fix error with this backslash ?
Groovy commands:
node ("instance") {
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance1/*
echo instance1;
scp 100.0.0.50:/var/log/file1.log /root/logfiles/instance1/file1.log;
scp 100.0.0.50:/var/log/file2.log /root/logfiles/instance1/file2.log;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance2/*
echo instance2;
scp 100.0.0.51:/var/log/file1.log /root/logfiles/instance2/file1.log;
scp 100.0.0.51:/var/log/file2.log /root/logfiles/instance2/file2.log;
'''
}
}
Notice: I have rm -f
for all instances at this moment. Will substitute all rm -f
to the find
command on the stage cleaning folders.
Tks in advance
bash find bash-scripting jenkins groovy
bash find bash-scripting jenkins groovy
edited May 30 at 9:36
davidgo
41.5k74985
41.5k74985
asked May 26 at 8:02
Marlon
51212
51212
this hybrid slash wont help you? ` ∖ `
– user902300
May 26 at 13:43
1
Could you please post your Groovy script (or Pipeline, or whatever it is that you're using to run that command)?
– jayhendren
May 29 at 15:57
Pasted on question body the groovy script. @jayhendren
– Marlon
May 30 at 9:27
Since the slash character is simply escaping the following one, it may be that you just need to remove ir.
– davidgo
May 30 at 9:35
1
@davidgo in this particular case the backslash is definitely necessary to ensure the semicolon is parsed by find and not the shell.
– jayhendren
May 30 at 17:19
add a comment |
this hybrid slash wont help you? ` ∖ `
– user902300
May 26 at 13:43
1
Could you please post your Groovy script (or Pipeline, or whatever it is that you're using to run that command)?
– jayhendren
May 29 at 15:57
Pasted on question body the groovy script. @jayhendren
– Marlon
May 30 at 9:27
Since the slash character is simply escaping the following one, it may be that you just need to remove ir.
– davidgo
May 30 at 9:35
1
@davidgo in this particular case the backslash is definitely necessary to ensure the semicolon is parsed by find and not the shell.
– jayhendren
May 30 at 17:19
this hybrid slash wont help you? ` ∖ `
– user902300
May 26 at 13:43
this hybrid slash wont help you? ` ∖ `
– user902300
May 26 at 13:43
1
1
Could you please post your Groovy script (or Pipeline, or whatever it is that you're using to run that command)?
– jayhendren
May 29 at 15:57
Could you please post your Groovy script (or Pipeline, or whatever it is that you're using to run that command)?
– jayhendren
May 29 at 15:57
Pasted on question body the groovy script. @jayhendren
– Marlon
May 30 at 9:27
Pasted on question body the groovy script. @jayhendren
– Marlon
May 30 at 9:27
Since the slash character is simply escaping the following one, it may be that you just need to remove ir.
– davidgo
May 30 at 9:35
Since the slash character is simply escaping the following one, it may be that you just need to remove ir.
– davidgo
May 30 at 9:35
1
1
@davidgo in this particular case the backslash is definitely necessary to ensure the semicolon is parsed by find and not the shell.
– jayhendren
May 30 at 17:19
@davidgo in this particular case the backslash is definitely necessary to ensure the semicolon is parsed by find and not the shell.
– jayhendren
May 30 at 17:19
add a comment |
3 Answers
3
active
oldest
votes
up vote
3
down vote
accepted
It might help to escape your escape character, as funny as this might sound. Just put another backslash in front of your backslash:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
At least IntelliJ does not mark this as syntactically wrong.
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
add a comment |
up vote
0
down vote
Actually in your case I would not even bother to figure out proper escaping:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} +
'''
}
When you pass a semicolon to -exec
, find constructs multiple commands, one for each result of the find operation (e.g. rm -f /root/logfiles/instance/file1.log
, rm -f /root/logfiles/instance/file2.log
, ...), but when you use a plus, find constructs a single command with multiple arguments, which is much more efficient and fast (e.g. rm -f /root/logfiles/instance/file1.log /root/logfiles/instance/file2.log ...
). See the man page for find for more detail (sorry I can't quote the man page or provide more detail right now; I'm on mobile).
add a comment |
up vote
0
down vote
One solution would be to use dollar slashy which disables string interpolation and changes escape char to $.
stage ("cleaning folders"){
sh script: $/
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
/$
}
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
It might help to escape your escape character, as funny as this might sound. Just put another backslash in front of your backslash:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
At least IntelliJ does not mark this as syntactically wrong.
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
add a comment |
up vote
3
down vote
accepted
It might help to escape your escape character, as funny as this might sound. Just put another backslash in front of your backslash:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
At least IntelliJ does not mark this as syntactically wrong.
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
add a comment |
up vote
3
down vote
accepted
up vote
3
down vote
accepted
It might help to escape your escape character, as funny as this might sound. Just put another backslash in front of your backslash:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
At least IntelliJ does not mark this as syntactically wrong.
It might help to escape your escape character, as funny as this might sound. Just put another backslash in front of your backslash:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
At least IntelliJ does not mark this as syntactically wrong.
answered May 30 at 9:49
Aarkon
463
463
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
add a comment |
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
It sound that worked fine. Tks!
– Marlon
Jun 7 at 3:57
add a comment |
up vote
0
down vote
Actually in your case I would not even bother to figure out proper escaping:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} +
'''
}
When you pass a semicolon to -exec
, find constructs multiple commands, one for each result of the find operation (e.g. rm -f /root/logfiles/instance/file1.log
, rm -f /root/logfiles/instance/file2.log
, ...), but when you use a plus, find constructs a single command with multiple arguments, which is much more efficient and fast (e.g. rm -f /root/logfiles/instance/file1.log /root/logfiles/instance/file2.log ...
). See the man page for find for more detail (sorry I can't quote the man page or provide more detail right now; I'm on mobile).
add a comment |
up vote
0
down vote
Actually in your case I would not even bother to figure out proper escaping:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} +
'''
}
When you pass a semicolon to -exec
, find constructs multiple commands, one for each result of the find operation (e.g. rm -f /root/logfiles/instance/file1.log
, rm -f /root/logfiles/instance/file2.log
, ...), but when you use a plus, find constructs a single command with multiple arguments, which is much more efficient and fast (e.g. rm -f /root/logfiles/instance/file1.log /root/logfiles/instance/file2.log ...
). See the man page for find for more detail (sorry I can't quote the man page or provide more detail right now; I'm on mobile).
add a comment |
up vote
0
down vote
up vote
0
down vote
Actually in your case I would not even bother to figure out proper escaping:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} +
'''
}
When you pass a semicolon to -exec
, find constructs multiple commands, one for each result of the find operation (e.g. rm -f /root/logfiles/instance/file1.log
, rm -f /root/logfiles/instance/file2.log
, ...), but when you use a plus, find constructs a single command with multiple arguments, which is much more efficient and fast (e.g. rm -f /root/logfiles/instance/file1.log /root/logfiles/instance/file2.log ...
). See the man page for find for more detail (sorry I can't quote the man page or provide more detail right now; I'm on mobile).
Actually in your case I would not even bother to figure out proper escaping:
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} +
'''
}
When you pass a semicolon to -exec
, find constructs multiple commands, one for each result of the find operation (e.g. rm -f /root/logfiles/instance/file1.log
, rm -f /root/logfiles/instance/file2.log
, ...), but when you use a plus, find constructs a single command with multiple arguments, which is much more efficient and fast (e.g. rm -f /root/logfiles/instance/file1.log /root/logfiles/instance/file2.log ...
). See the man page for find for more detail (sorry I can't quote the man page or provide more detail right now; I'm on mobile).
answered May 30 at 17:29
jayhendren
228210
228210
add a comment |
add a comment |
up vote
0
down vote
One solution would be to use dollar slashy which disables string interpolation and changes escape char to $.
stage ("cleaning folders"){
sh script: $/
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
/$
}
add a comment |
up vote
0
down vote
One solution would be to use dollar slashy which disables string interpolation and changes escape char to $.
stage ("cleaning folders"){
sh script: $/
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
/$
}
add a comment |
up vote
0
down vote
up vote
0
down vote
One solution would be to use dollar slashy which disables string interpolation and changes escape char to $.
stage ("cleaning folders"){
sh script: $/
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
/$
}
One solution would be to use dollar slashy which disables string interpolation and changes escape char to $.
stage ("cleaning folders"){
sh script: $/
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} ;
/$
}
answered Nov 21 at 10:43
jikuja
11
11
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1326117%2fgroovy-syntax-not-working-with-backslashes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
this hybrid slash wont help you? ` ∖ `
– user902300
May 26 at 13:43
1
Could you please post your Groovy script (or Pipeline, or whatever it is that you're using to run that command)?
– jayhendren
May 29 at 15:57
Pasted on question body the groovy script. @jayhendren
– Marlon
May 30 at 9:27
Since the slash character is simply escaping the following one, it may be that you just need to remove ir.
– davidgo
May 30 at 9:35
1
@davidgo in this particular case the backslash is definitely necessary to ensure the semicolon is parsed by find and not the shell.
– jayhendren
May 30 at 17:19