使用 jenkins 部署的 sed shell

sed shell with jenkins deployment

我现在正在做一些事情,现在我什至想知道我正在做的事情是否可行。

我想通过 SSH 从 jenkins 连接到 shell 脚本,并使用 git 存储库中的 rc 文件中的变量。 (Shell 脚本和 rc 文件在同一个 repo 中)

我尝试过的都不起作用,现在我开始怀疑这是否可行。

这是我的本地脚本,但我在 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'

无论我做什么我都会得到这个错误

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

是的,我可以确认目录在那里

这里有一个更简单的方法来重现您的问题:

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

发生这种情况是因为预期的语法是 bash yourfile。您传递的字符串不是有用的文件名,因此失败。

以运行一个字符串参数作为命令,可以使用bash -c commandstring:

$ bash -c "echo Hello"
Hello

这使得 bash 将参数解释为要执行的 shell 命令,而不是要打开的文件名。