bashshelljenkinssedrc

sed shell with jenkins deployment


I'm working on something at the moment and just now I even wonder if what I am working on is even possible.

I want to SSH from jenkins to a shell script and use variables form a rc file that are in a git Repository. (The Shell script and rc file are in the same repo)

Nothing that I tried works and now I'm starting to wondering if it's even possible.

Here's is my local script but i get the same output on jenkins.

docker exec -it test-container bash 'sed -f <(printf "s/${DOMAIN}\.%s/www.&.${DOMAIN_SUFFIX_STAGE}/g\n" ${LANG_KEYS}) /var/www/foo/sed/test.txt > /var/www/foo/sed/new-2.txt'

No matter what I do I get this error

bash: sed -f <(printf "s/${DOMAIN}\.%s/www.&.${DOMAIN_SUFFIX_STAGE}/g\n" ${LANG_KEYS}) /var/www/foo/sed/test.txt > /var/www/foo/sed/new-2.txt: No such file or directory

And yes I can confirm that the directory is there


Solution

  • Here's an easier way to reproduce your problem:

    $ bash "echo Hello"
    bash: echo Hello: No such file or directory
    

    This happens because the expected syntax is bash yourfile. The string you are passing is not a useful filename, so it fails.

    To run a string argument as a command, you can use bash -c commandstring:

    $ bash -c "echo Hello"
    Hello
    

    This makes bash interpret the parameter as a shell command to execute, instead of a filename to open.