问题标签 [herestring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2946 浏览

bash - Bash bc 返回 (standard_in) 1:仅当部分 for 循环时解析错误

我正在遍历一个整数数组${startTimes}(音频文件中的标记位置,在样本中)并使用bc将这些整数转换为毫秒。我将结果传递到一个新数组${msValuesArray}中。如果我一次运行每个数组元素,它工作正常。如果我for循环运行它:

结果${msValuesArray}包含预期结果,但终端输出(standard_in) 1: parse error.

虽然我打算在 shell 脚本中使用它,并且在阅读了此处的其他问题后,我了解到添加#!/bin/bash到命令的开头可以避免解析错误,但我仍然不明白以下内容:

a)为什么在循环也有效的情况下手动将${startTimes}元素传递到bc工作而没有解析错误for,但输出解析错误(在shell脚本之外)?

b) 尽管有解析错误,我还是得到了我想要的结果数组。我应该忽略错误吗?

c)当添加#!/bin/bash到命令的开头(仍然在 shell 脚本之外,只是在命令行中)为什么结果无法访问?(输入echo ${msValuesArray[@]}返回一个空数组。)

d) 在 shell 脚本中运行时,是否发生了同样的错误,但只是没有打印到终端?

任何帮助表示赞赏。谢谢。

0 投票
1 回答
518 浏览

powershell - PowerShell 从哪里获取它放入此处字符串的换行符?

考虑以下 PowerShell 代码:

在我的电脑上这个输出

它们分别是用于回车和换行的 ASCII 控制字符的十进制表示。

在 AppVeyor 上执行的相同代码只输出一个数字

换句话说,PowerShell 在此处字符串中使用的字符之间似乎存在差异。我希望源与输出此处字符串中的单个字符的环境[System.Environment]::newlineAppVeyor环境相同,输出

[System.Environment]::newline. [System.Environment]::newline似乎不是此处字符串中换行符的来源。

0 投票
2 回答
392 浏览

powershell - 如何使用 $_. 字符串中的变量?

我似乎无法弄清楚如何在 herestring 中使用变量,以及稍后在管道命令中扩展该变量。我已经尝试过单引号'和双"引号,以及转义`字符。

我正在尝试将 herestring 用于 Exchange 组的列表(例如数组),以及适用于这些组的相应条件列表。这是一个未能$Conditions正确使用变量的简化示例(它不会扩展$_.customattribute2变量):

0 投票
1 回答
330 浏览

linux - 这里的字符串会进行分词吗?

引用Bash 参考手册man bash(4.3 版):

[n]<<< word

经历大word括号扩展、波浪号扩展、参数和变量扩展、命令替换、算术扩展和引号删除。不执行路径名扩展和分词。

word不应进行分词。但是,使用这个简单的代码:

我错过了什么?这取决于版本bash还是手册中有错误?我正在使用GNU bash, version 4.3.48.

0 投票
2 回答
175 浏览

powershell - 在循环外声明一个包含变量的 here-string

我想在循环之外声明一个here-string,在解析变量的循环中使用该字符串。

我的理想情况如下所示。这不起作用,因为 Powershell 在进入循环之前对字符串进行一次评估,而不是在循环内每次都评估字符串,这很明显,但仍然被它咬住了。

我知道我可以使用其中一种解决方案

但他们有我想避免的缺点

  • 由于字符串的大小,在循环内声明它会混淆循环的逻辑,从而降低代码的可读性。

  • 当涉及许多变量时,格式化解决方案很容易出错。

  • 在替换解决方案中,更容易匹配由什么变量替换的内容,但我必须链接许多replace命令。

编辑

重读我自己的问题很明显,问题中缺少实际用例。
请注意,最终我最终选择了格式化选项

以下将使用一些需要在循环中替换的变量声明模板

这个模板会被用在这样的语句中

$rolledbackMatchs 是一个包含三个属性的自定义对象数组:dtp_ref、pay_acc_nbr 和 inv_unt。

0 投票
2 回答
104 浏览

pipe - 如何将 xargs 与 ed 一起使用?

我想在一个文件夹中递归地批量替换字符串,我已经使用 Perl 解决了。我想看看是否有一个解决方案需要更少的依赖和跨平台工作。

对于列出文件,我可以使用从lstofindag,的任何东西rg。Lemme 用ls.

ls | xargs -I '{}' ed -s {} <<< $'='

我会得到这个:

Is a directory newline appended =: No such file or directory

由于管道用于将文件名传递给xargs,并且流(此处为字符串)似乎无法正常工作(如何将 heredocs 与 xargs 一起使用?)。我想知道是否可以使用xargswith ed

我关心的是跨平台,实际上该命令将放在package.json. 我们想知道除了引入和仅针对此任务npm run global_replace之外是否还有其他解决方案。gulp-replacegulp

0 投票
1 回答
258 浏览

bash - 如何在类似 ANSI C 的字符串中扩展 env var 并使用文字换行符?

我正在使用 herestring 将字符串(带有换行符的两个输入值)作为标准输入传递给安装程序可执行文件。例如,执行带有两个输入的安装程序/var/tmpyes

但是,我需要参数化输入。

例如

这样我就可以像这样执行它:

被标记为重复的问题不回答这个问题。它在概念上相似,但差异足以保证它自己的问题。

0 投票
1 回答
205 浏览

c# - 在多行字符串中使用枚举名称将每个字符串行与枚举的整数值相关联。有没有更好的办法?

我的 RTF 解析器需要处理两种类型的 rtf 文件(每个程序执行一个文件):从 Word 保存的 rtf 文件和由 COTS 报告生成器实用程序创建的 rtf 文件。每个的 rtf 都是有效的,但不同。我的解析器使用正则表达式模式来检测、提取和处理两种 rtf 文件中的各种 rtf 元素。

我决定在两个字典中实现 rtf 正则表达式列表,一个用于 Word rtf 文件所需的 rtf regex 模式,另一个用于 COTS 实用程序 rtf 文件所需的 rtf regex 模式。在运行时,我的解析器检测正在处理哪种类型的 rtf 文件(Word rtf 包含 rtf 元素//schemas.microsoft.com/office/word而 COTS rtf 不包含),然后从适当的字典中获取所需的正则表达式模式。

为了简化在编写代码时引用模式的任务,我实现了一个枚举,其中每个枚举值代表一个特定的正则表达式模式。为了简化保持模式与其相应枚举同步的任务,我将正则表达式模式实现为here-string每行是一个 csv 组合:{enum name}, {word rtf regex pattern}, {cots rtf regex pattern}. 然后,在将模式加载到其字典中的运行时,我从 csv 获取枚举的 int 值并使用它来创建字典键。

这使得编写代码更容易,但我不确定这是实现和引用 rtf 表达式的最佳方式。有没有更好的办法?

示例代码:

我像这样加载字典:

然后,在运行时,我根据解析器检测到的 rtf 文件的类型访问 ObjWordRtfDict 或 ObjRtfDict。

根据 Asif 的建议修改了新代码

我保留了模式名称的枚举,因此编译器可以检查对模式名称的引用

作为嵌入资源包含的示例 csv 文件

示例用法

ClsRegExPatterns 类

0 投票
1 回答
454 浏览

powershell - 如何将此处的字符串作为参数传递给终端中的 powershell 脚本?

我有一个名为“file1.ps1”的Powershell脚本,如下所示,它工作得很好:

该文件提供以下输出:

现在,我想将 $herestring 作为参数传递给这个文件。因此,修改后的脚本如下所示:

因此,当我在 Powershell ISE 或 vscode 的终端中运行它时,我无法粘贴或传递 $herestring,因为它有换行符。

当我尝试粘贴时,每一行都被视为单独的命令。

在这种情况下,如何提供 here-string 作为参数?

我尝试将 here-string 构造为单引号内的单行以及三个连续的双引号。此外,尝试使用反引号 n 和反引号 r

它要么导致语法错误,要么没有给出预期的结果。

0 投票
2 回答
1621 浏览

powershell - 如何在powershell中为herestring/heredoc设置编码?

我正在尝试更新 Windows 服务器上的主机文件,并尝试使用 powershell 中的 heredoc 进行更新。

我无法弄清楚为什么我的结果在每个主机条目中的每个字符之间都有额外的空格。

我正在从 Linux 移植一些脚本。

我希望所有字符之间没有空格。如果有“Windows”方法可以做到这一点,我将不胜感激任何输入/建议。