Here-document是在源代码中编写文字字符串的特殊语法,由不同的编程语言使用。
现在这会在标准输出上输出我需要的值。如何将其捕获到变量中,以便在脚本的其余部分中使用它? 要求: 该脚本必须全部位于一个文件中。 我更愿意...
Ansible 在expect/command 块中引用了heredoc,在expect 命令中找不到分隔符/多行命令
我正在尝试生成一个脚本,通过 ssh 将其复制到 ansible 期望/响应块中到远程主机。我想避免编写中间文件。 我有两个问题: Ansible 似乎可以...
我正在尝试创建一个 shell 脚本,它多次通过程序并计算一些物理参数。该程序在控制台中使用“./radex”打开,然后...
如何在此处文档中执行 for 循环(Linux shell 脚本)
我正在尝试创建一个 shell 脚本,它多次通过程序并计算一些物理参数。该程序在控制台中使用“./radex”打开,然后...
我正在学习麻省理工学院的计算和编程入门课程,我正在尝试将多行字符串存储在一个变量中,我可以使用该变量让程序与用户交互。 我知道...
我正在编写一个程序,逐行分析一个大目录文本文件。这样做时,我试图提取文件的不同部分并将它们分类为“名称”、“地址”等。但是...
我的代码中有几个带缩进的多行字符串,如下所示(简化示例): def foo(): cmd = '''ls /usr/bin /usr/sbin /usr/
在 Dockerfile 中的同一个 RUN 语句中的heredoc之后运行程序
我想使用heredoc创建一个文件,然后在Dockerfile中的相同RUN语句中运行命令。 为了说明这一点,请看这个 Dockerfile 来自阿尔卑斯山 RUN 导出 FOO=bar && \ ...
我可以在 VS Code 中格式化 Heredoc 中的 HTML 吗?
我目前正在开发一个 PHP 项目,其中涉及大量 HTML 的“回显”。由于 HTML 标签中有很多撇号,我使用 Heredoc 来不必转义所有
我有一个heredoc,需要从主脚本调用现有变量,并设置自己的变量以供稍后使用。像这样的事情: 计数=0 ssh $other_host < 我有一个heredoc,需要从主脚本调用现有变量,并且设置自己的变量以供稍后使用。像这样的东西: count=0 ssh $other_host <<ENDSSH if [[ "${count}" == "0" ]]; then output="string1" else output="string2" fi echo output ENDSSH 这不起作用,因为“输出”没有设置为任何内容。 我尝试使用这个问题的解决方案: count=0 ssh $other_host << \ENDSSH if [[ "${count}" == "0" ]]; then output="string1" else output="string2" fi echo output ENDSSH 也没有用。 $output 被设置为“string2”,因为 $count 没有扩展。 如何使用从父脚本扩展变量的定界文档,并且设置自己的变量? 您可以使用: count=0 ssh -t -t "$other_host" << ENDSSH if [[ "${count}" == "0" ]]; then output="string1" else output="string2" fi echo "\$output" exit ENDSSH 我们使用\$output,以便它在远程主机上而不是在本地扩展。 最好不要使用 stdin(例如使用此处文档)将命令传递给 ssh。 如果您使用 命令行参数 来传递 shell 命令,您可以更好地分离本地扩展的内容和远程执行的内容: # Use a *literal* here-doc to read the script into a *variable*, $script. # Note how the script references parameter $1 instead of local variable $count. read -d '' -r script <<'EOF' [[ $1 == '0' ]] && output='zero' || output='nonzero' echo "$output" EOF # The variable whose value to pass as an argument. # With value 0, the script will echo 'zero', otherwise 'nonzero'. count=0 # Use `set -- '$<local-var>'...;` to pass the local variables as # positional arguments, followed by the script code. ssh localhost "set -- '$count'; $script" 你可以像@anubhava所说的那样转义变量,或者,如果转义的变量太多,你可以分两步完成: # prepare the part which should not be expanded # note the quoted 'EOF' read -r -d '' commands <<'EOF' if [[ "$count" == "0" ]]; then echo "$count - $HOME" else echo "$count - $PATH" fi EOF localcount=1 #use the unquoted ENDSSH ssh [email protected] <<ENDSSH count=$localcount # count=1 #here will be inserted the above prepared commands $commands ENDSSH 将打印类似以下内容: 1 - /usr/bin:/bin:/usr/sbin:/sbin
bashscripts 中的heredocs 的替代品?外部模板?
我目前在 bash 脚本中使用了许多heredocs。 这些文档包含 bash 变量,例如${MY_VAR},在脚本执行和读取定界文档时被替换。 其中一些文档有
在 bash 中,我可以使用此处文档创建一个脚本,如下所示: http://tldp.org/LDP/abs/html/abs-guide.html#GENERATESCRIPT ( 猫 <<'EOF' #!/bin/bash #? [ ] / \ = + < > : ; “……
我想在heredoc中使用一个类常量,该常量在注释中使用,但这给了我一个错误。 类示例{ #[我的注释(架构:<< 我想在heredoc中使用一个类常量,该常量在注释中使用,但这给了我一个错误。 class Example { #[MyAnnotation(schema:<<<YAML type: {${MyOtherClass::A_CONSTANT}} YAML)] function myFunction() {} } 结果:PHP Fatal error: Constant expression contains invalid operations 这看起来类似于 另一个heredoc问题,但作为一个const值,这应该在编译时可用。 我找不到任何关于为什么这不起作用的信息。我很高兴能找到遇到类似问题的人的线索,或者找到一种更优雅的方式来编写 JSONSchema,而无需链接多个heredocs。当然,我可以只使用字符串。 为什么类常量可以在普通表达式中的heredoc中使用,但不能在注释中使用。 这是我当前在 PHP 8.1 中的解决方法: class Example { #[MyAnnotation(schema:<<<YAML type: YAML . MyOtherClass::A_CONSTANT)] function myFunction() {} } 这在现有的语言中是不可能的。有关于字符串插值更改的讨论(请参阅评论),但不是我认为可能的风格。 许多其他语言使用 ${foo} 样式字符串插值,最显着的是 bash 和 JavaScript(在模板文本中)。然而,它的行为与 PHP 中的行为不同。在 PHP 中,该语法意味着变量。在 JavaScript 中,它支持任意表达式 2)。在目前的形式中,[美元符号后的大括号(“${foo}”)]和[变量]的用途有限,并且会让其他附近语言的用户感到困惑,因为它们的行为完全不同。 PHP RFC:弃用 ${} 字符串插值 这也是我困惑的来源。
由于一些限制,我必须仅使用 echo 和 cat 命令以及此处文档将本地文件传输到远程 ssh。 我试过了: #!/bin/bash SSH_CMD=xxx # 假设 `SSH_CMD` 是我的 ssh 命令 w=&q...
在 PHP7.2 中使用 HEREDOC 语法时出现“语法错误,意外的 '' (T_ENCAPSED_AND_WHITESPACE)”,但 PHP7.4 没问题
if (array_key_exists('icon_path', $changedAttributes)) { $iconFile = $changedAttributes["icon_path"]; } 为什么 $iconFile = $changedAttributes["icon_path"];线给了我...
我需要我的脚本从终端发送电子邮件。根据我在这里和网上许多其他地方看到的内容,我将其格式化如下: /var/mail -s "$SUBJECT" "$EMAIL" << EOF Here's a line of...
在 POSIX shell 中(在本例中我们考虑 bash),每当我们运行 cmd << eof, the shell expects input until a string containing only eof is received. Also, the standard states that: If...
在 zsh 中可以使用heredoc进行进程替换。如何让它在 bash 中工作?
我希望能够将定界文档传递给源命令以进行本地解释。 Heredoc 文档的主体将在稍后调用脚本之前注入,并且可以是多行的。 我上来了
我正在奔跑…… xargs -0 somescript -C << EOF drush ev 'somethingelse("$STRING",[]);' EOF somescript is a script I need to run and I do not control. It expects a command as an argu...
我试图通过执行以下代码来获取 Oracle DB 模式 - 如果它处于读写模式 - 但出现错误。 我试过: 状态=$(su - orasid -c "sqlplus "/as sysdba " \<\...