Jenkins file execution error while running shell commands - shell

The below code is being used to trigger a shell command using Jenkins file.
sh """
val=\$(echo ${val} | sed 's/[^a-zA-Z0-9]//g')
echo ${val}
"""
The below error reflects as part of the code :
/home/me/#tmp/abcd/script.sh: command substitution: line 4: syntax error near unexpected token `('
Any solution to the same ? Thanks in advance!

Related

Bash: "syntax error near unexpected token" that's a valid token

I have the following bash code in a script file:
if [ 'false' == 'true' ]
then
write_map() >> 'groups.txt'
Groups='groups.txt'
fi
When I try to run the script, I get this message from bash, and nothing is run:
syntax error near unexpected token `>>'
Why is >> an "unexpected token?
Why is bash failing on code that is inside an "if" that won't be run?
This bash code was created by Cromwell wdl. write_map is a wdl function, not a bash function. Could that be what's breaking bash?
So, there were two issues
write_map was being called wrong in the wdl code that was the source for this bash code
When called correctly, write_map is turned into a file, and you can't >> a file (you have to cat it then >>)

Automator AppleScript - trying to echo a string variable to Bash

I am trying to create a service using Automator.
Inside a Run AppleScript action I have a variable that is a string in which each line is a word separated by linefeed. Like this:
à
às
a
ante
ao
aos
após
aquela
When I try to echo this to terminal by doing:
do shell script "echo " & (finalText as string)
I get this error:
The action “Run AppleScript” encountered an error: “sh: line 1: a: command not found
sh: line 2: à: command not found
sh: line 3: ante: command not found
...
sh: -c: line 30: syntax error near unexpected token `do'
sh: -c: line 30: `do'”
Any ideas?
To get rid of the command not found type errors in this case, and just about anytime when passing a variable to a do shell script command, use:
do shell script "echo " & finalText's quoted form
You can also use:
do shell script "echo " & quoted form of finalText
Whichever you prefer as appropriate.

Error on cron job, but working fine on shell

I am configuring Cron to backup my sql automatically. However I think that Cron has some issues and it's not working well.
This is the command I am running:
mysqldump --opt -Q -uhereisthename -p'hereisthepasswordwithstrangecharactersthatmustbeescaped' databasename | gzip > /home2/username/backups/backupnamefolder/backupdbwebsitename.`date +"%Y-%m-%d"`.gz
When I run it via SSH it works fine and generates the backup.
However if I run it via Cron, I get the following error:
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
Anybody can suggest what's wrong?
Cron treats % as a special character (meaning "new line", hence the references to lines 0 and 1 in the error message). You need to escape it:
date "+\%Y-\%m-\%d"
By the way, the posix $( ) syntax is generally better than backticks - it allows nested commands.

unix Syntax error near unexpected token 'done'

This script
#!/bin/sh
once=true
while $once do
stop & PID=$!
sleep 10M
if [$!=0]; then
start
break
else
kill $PID
fi
done
Gives
./restart.sh: line 18: syntax error near unexpected token `done'
./restart.sh: line 18: `done'
I don't understand, it had run previously on another unix system. Am i missing something?
EDIT
stop and start are functions that simply run stop.sh and start.sh respectively.
You seem to be missing a semicolon on line 4. Modifying it to read
while ${once}; do
should fix it.

Why do I get "unexpected token `;'?

I would like to run a few instances of my bash script foo.bash in background.
When I write for i in {1..10}; do ~/bin/foo.bash & ; done in the command line I get an error: bash: syntax error near unexpected token ;
Could you explain why this error occurs and how to fix the command?
& and ; are both command separators; you don't need (and can't have) both.
for i in {1..10}; do ~/bin/foo.bash & done

Resources