问题标签 [parameter-expansion]

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 回答
1064 浏览

regex - 正则表达式匹配行尾 $ 在 Bash 脚本中不起作用

我正在尝试在 bash 脚本中执行一个简单的正则表达式语句,该语句将匹配并替换单词的结尾。以下是我正在尝试做的事情。

下面是我正在使用的代码。

我不熟悉 bash 脚本,我认为它与 bash 有关,$因为它用于标记变量。我试图逃避它,并/在它之后添加另一个。当我删除$它时(不检查单词的结尾)。

0 投票
1 回答
48 浏览

bash - 为什么 bash 间接扩展必须使用 temp 变量?

https://stackoverflow.com/a/10820494/1764881,我知道标准的做法似乎是:

但是,我似乎无法做以下任何一种形式。他们都失败了:

我阅读了 bash 手册页,但我仍然无法理解。第一种形式是唯一被接受的形式,对吗?

0 投票
2 回答
2856 浏览

arrays - 数组上的 Shell 参数扩展

假设我将一些数据读入 Bash 数组:

现在,我想为/数组中的每个元素打印第一个切片字段。

我所做的是遍历元素并使用 shell 参数扩展从第一个剥离所有内容/

但是,sinceprintf允许我们在单个表达式中打印数组的全部内容:

...我想知道是否有一种方法可以在使用时使用 shell 参数扩展${w%%/*}printf而不是循环遍历所有元素并对每个元素执行此操作。

0 投票
3 回答
175 浏览

bash - 使用参数扩展使用 Bash 从字符串中删除前导数字

初始字符串是RU="903B/100ms" 我希望从中获取B/100ms的。

目前,我写过:

它返回/100ms,因为参数扩展最多删除并包括第一个非数字字符。在这种情况下,我想保留第一个非数字字符。我将如何通过修改上述文本来做到这一点?

0 投票
2 回答
252 浏览

bash - bash 子字符串替换可以使用正则表达式吗?

给定一个字符串,例如

如何使用 bash 子字符串替换来删除给定的子字符串及其相邻的空间(可能存在也可能不存在)?

例如,这会导致额外的空格:

在我的实际代码中,我不会提前知道子字符串是什么或它在字符串中的位置,因此它是否有前导或尾随空格是未知的。我想做这样的事情,就像你在 中所做的那样sed,但它当然没有用:

sed中,我会使用类似的东西sed -e 's/ *val2 */ /',但我想在 bash 中完成所有这些。

有没有办法定义子字符串,使模式包含零个或多个空格 + 'val2' + 零个或多个空格?

0 投票
1 回答
387 浏览

shell - 命令 s 标志的输出上的 Zsh 参数扩展不起作用

在 zsh 中,如果我运行:

我得到foo了你所期望w的(导致索引引用单词s:, :成为,单词分隔符)。

但是,如果我尝试结合这些:

我明白了foo,。由于某种原因,该w标志工作正常,但该s:, :标志被完全忽略。

我在这里做错了什么?

更多信息:这只是 ${} 中的 $() 的问题。如果我将 ${} 嵌套在 ${} 中,就不会有这样的问题。

0 投票
1 回答
44 浏览

bash - Bash 字符类参数扩展不一致的行为

以下是似乎向我暗示 bash 中的错误的所有步骤。

版本和平台信息

问题的详细步骤:

为什么 '*[:alpha:]' 会列出 'a*' 文件名而不是 'b*' 文件名?

对于那些想知道,为了获得正确的行为,必须使用 *([[:alpha:]])。但这并不能解释这里显示的不一致。

0 投票
2 回答
3428 浏览

bash - Bash:如何使用运算符参数扩展 ${parameter@operator}?

我用谷歌搜索并尝试了很多东西,但从来没有用 ${parameter@operator} 得到任何东西。我发现的只是指向相同文档的更多链接。所以我认为用实际例子来正确回答对理解它很有帮助。

文档说:

${参数@操作员}

扩展要么是参数值的转换,要么是有关参数本身的信息,具体取决于运算符的值。每个运算符都是一个字母:

Q
扩展是一个字符串,它是以可重复用作输入的格式引用的参数值。

它还提到了引用:

3.1.2 引用
引用用于去除某些字符或单词对shell 的特殊含义。

所以我的推理是这个(特殊字符$)的输出:

应该是这样(在“”之间,'\'被删除,所以需要再次引用以用作输入):

但我得到:

我尝试了不同的组合:

无济于事。

实际上,我尝试使用的任何运算符总是会产生错误的替换错误。这些似乎是 bash 非常晦涩的功能。我已经从这篇文章中省略了大约半小时的尝试,每一个都比以前更扭曲!

0 投票
2 回答
12945 浏览

bash - 在点之前提取子字符串

我尝试在 bash中减去dot( ) 之前的第一个字符串。.

例如:

我根据文档使用了以下命令:

但它输出4.5而不是4. 我不明白。

这是为什么?

0 投票
1 回答
483 浏览

bash - 在 bash 中,dir=${0%/*} 是什么意思?

我在研究 bash 脚本时发现了这段代码:

我怀疑大括号内的代码是正则表达式,但我不明白它的含义。任何想法?