在我的Dockerfile
中,我想运行一个执行bash脚本的命令,该脚本获取从文件读取的传递参数。
在plugins.txt
中指定了一个插件(完整文件内容:configuration-as-code
),但是bash脚本根本不接收任何参数。
但是,正如我已经找到了在blog post上安装插件的方式一样,我认为它应该可以按原样工作。
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
COPY install-plugins.sh /usr/local/bin/install-plugins.sh
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
安装程序脚本以以下几行开头,以Usage /usr/local/bin/install-plugins.sh plugin1 plugin 2 ...
退出
#!/bin/bash
set -e
if [ $# -eq 0 ]; then
echo "USAGE: $0 plugin1 plugin2 ..."
exit 1
fi
如何正确将文件plugins.txt
的内容传递给脚本?
编辑
我找到了正确传递参数的解决方案。有人知道为什么最初的尝试是错误的吗?
它适用于:
RUN /usr/local/bin/install-plugins.sh $(cat /usr/share/jenkins/ref/plugins.txt)
答案 0 :(得分:0)
问题在于I / O重定向不是脚本的参数。
我们可以使用D:\Go>go run octa.go
# command-line-arguments
.\octa.go:42:10: syntax error: unexpected name at end of statement
.\octa.go:46:13: syntax error: unexpected name at end of statement
命令来检查脚本是否正在使用I / O重定向来读取文件。
如果脚本具有TTY,则检查参数数量。从参数中读取插件名称。
如果它没有TTY,则意味着我们使用I / O重定向,在这种情况下,我们不需要检查参数。通过tty
命令将插件名称从I / O重定向读取到数组变量plugins
中。
mapfile