- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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
希望它能简单地连接起来,但我无法让这两个 heredoc 工作(我猜 bash 不是 Perl)
我的后备计划是创建临时文件,但我希望有一个我不知道的技巧,有人可以教我:-)
最佳答案
在这种情况下,您可以考虑使用 bash
及其 -s
参数:
sudo -u buildmaster bash -s -- "$PARAMETER" <<'END'
# do all sorts of crazy stuff here including using variables, like:
ARGS=something
ARGS="$ARGS or other"
# and so forth
PARAMETER=$1
END
(请注意,您有一个语法错误,您的结束 END
被引用但不应该被引用)。
还有另一种可能性(这样你就有很多选择——如果适用的话,这个可能是最简单的)是导出你的变量,并使用 -E
切换到 sudo
导出环境,例如,
export PARAMETER
sudo -E -u buildmaster bash <<'EOF'
# do all sorts of crazy stuff here including using variables, like:
ARGS=something
ARGS="$ARGS or other"
# and so forth
# you can use PARAMETER here, it's fine!
EOF
沿着这些思路,如果您不想导出所有内容,您可以使用 env
如下:
sudo -u buildmaster env PARAMETER="$PARAMETER" bash <<'EOF'
# do all sorts of crazy stuff here including using variables, like:
ARGS=something
ARGS="$ARGS or other"
# and so forth
# you can use PARAMETER here, it's fine!
EOF
关于bash 多个 heredocs 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28708068/
我在 php 脚本中有类似的东西: > $logFile > $logFile > $logFile > test.log > test.log <
我需要在没有任何格式的网页上显示 bash 脚本。 bash 脚本使用标准的“此处文档”块。当我尝试使用 PHP heredoc 函数输出脚本时,它会在遇到 ' #!/bin/sh rm /tmp/b
这个问题在这里已经有了答案: Does Java have support for multiline strings? (44 个答案) 关闭 7 年前。 对于 JAVA 开发,我需要写入带有“\
我知道这里有很多关于 heredocs 以及重定向和文件描述符的帖子,但我似乎找不到与我想做的事情相关的任何内容。 我想打开一个文件描述符到一个文件,然后将 heredoc 写入该文件描述符。 这是我
我刚刚开始阅读 O'Reilly 关于 PHP、MySQL 和 JavaScript 的书,并且刚刚进入学习 heredocs 的阶段。它在书中说他们按字面意思保留文本,但我的根本没有。我什至完全按照
使用下面的代码,我希望看到显示 5 个单独的行。相反,它将所有内容都放在一行上......没有制表符,没有前导空格,没有空行。出乎我的意料。 查看其他代码后,程序员插入了一系列我尝试过的 's(使用
在这里,我试图在 bash 中声明一个具有多行值的变量: $ GET="$(cat GET / HTTP/1.1 > Host: 127.0.0.1:80 > > EOF > )" 这肯定有效,但是
对于我从事的个人发展和项目,我们使用四个空格而不是制表符。但是,我需要使用 heredoc,而且我不能在不破坏缩进流的情况下这样做。 我能想到的唯一可行的方法是: usage() { cat
我正在尝试将一个数组元素传递给 heredoc,目标是生成一个文件,例如: declare -a box=("element1" "element2" "element3") cat > test.t
我正在为没有 bash 经验的 friend 编写脚本。该脚本生成一个备份脚本,生成一个 crontab 并运行 crontab 以创建一个 cron 作业。 我想为这些备份添加日期,因此当前脚本(相
这里有人可以探索使用 heredoc 的复杂性吗?在 PHP 中使用示例 PHP 代码片段,基于手册下面的内容? php.net 手册说: It is very important to note t
这个问题在这里已经有了答案: Why do these Heredoc and Nowdoc cause errors? (6 个答案) 关闭 7 年前。 我正在使用 Heredoc 将非常大的 H
我正在为 Controller 方法编写代码,我需要用它来发送电子邮件。我正在尝试使用 heredoc 语法来填写电子邮件正文,但是,似乎无法识别结束标记。 $this->email = new Em
我正在尝试用 heredoc 语句替换 HTML 代码。但是,我在最后一行收到解析错误。我确信我没有在 heredoc 结束标记行上留下任何前导空格或缩进。以下是代码的一部分: $table =
我想使用 irb 和一个 HTML 页面做一些正则表达式测试,我正试图 gsub 一些东西。 然而,我们都知道和喜爱的 HEREDOC 语法在 Ruby 中似乎有所不同: irb(main):140:
我喜欢 HEREDOC 语法,例如对于不值得放入模板的生成 HTML 的边缘情况。 不过,唯一让我恼火的是内容和 heredoc 字符串的结束标记紧贴第一列。这搞砸了嵌套代码布局: class myc
这个不起眼的终端功能在紧要关头提供一个文本编辑器。 在 Linux 和 Unix 的 shell 中有一个不为人知的功能,它能让你用 cat 命令打开一个 do-w
代码示例: create_data_with( first: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", secon
假设我在我的类中有一个名为 $_staticVar 的静态变量,我正试图像这样访问它。该变量有一个成员 aString,它的字符串值为 "my static variable" echo Th
$js = <<
我是一名优秀的程序员,十分优秀!