【发布时间】:2015-04-26 19:12:35
【问题描述】:
我有一个 bash 构建脚本,我(嗯,Jenkins,但这无关紧要,这是一个 bash 问题)执行如下:
sudo -u buildmaster bash <<'END'
# do all sorts of crazy stuff here including using variables, like:
ARGS=something
ARGS="$ARGS or other"
# and so forth
END
现在我想传入一个变量(Jenkins 参数化构建),比如 PLATFORM。问题是,如果我在 heredoc 中引用 $PLATFORM,它是未定义的(我使用 'END' 来避免变量替换)。如果我将 'END' 变成 END,我的脚本将变得非常不可读,因为我需要使用所有转义符。
所以问题是,是否有一些(简单、易读的)方法可以将两个 heredocs(一个带引号,一个不带引号)传递到同一个 bash 调用中?我正在寻找类似的东西
sudo -u buildmaster bash <<PREFIX <<'END'
PLATFORM=$PLATFORM
PREFIX
# previous heredoc goes here
END
希望它可以简单地连接,但我无法让两个 heredocs 工作(我猜 bash 不是 Perl)
我的后备计划是创建临时文件,但我希望有一个我不知道的技巧并且有人可以教我:-)
【问题讨论】: