问题标签 [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.
regex - 正则表达式匹配行尾 $ 在 Bash 脚本中不起作用
我正在尝试在 bash 脚本中执行一个简单的正则表达式语句,该语句将匹配并替换单词的结尾。以下是我正在尝试做的事情。
下面是我正在使用的代码。
我不熟悉 bash 脚本,我认为它与 bash 有关,$
因为它用于标记变量。我试图逃避它,并/
在它之后添加另一个。当我删除$
它时(不检查单词的结尾)。
bash - 为什么 bash 间接扩展必须使用 temp 变量?
从https://stackoverflow.com/a/10820494/1764881,我知道标准的做法似乎是:
但是,我似乎无法做以下任何一种形式。他们都失败了:
我阅读了 bash 手册页,但我仍然无法理解。第一种形式是唯一被接受的形式,对吗?
arrays - 数组上的 Shell 参数扩展
假设我将一些数据读入 Bash 数组:
现在,我想为/
数组中的每个元素打印第一个切片字段。
我所做的是遍历元素并使用 shell 参数扩展从第一个剥离所有内容/
:
但是,sinceprintf
允许我们在单个表达式中打印数组的全部内容:
...我想知道是否有一种方法可以在使用时使用 shell 参数扩展${w%%/*}
,printf
而不是循环遍历所有元素并对每个元素执行此操作。
bash - 使用参数扩展使用 Bash 从字符串中删除前导数字
初始字符串是RU="903B/100ms"
我希望从中获取B/100ms
的。
目前,我写过:
它返回/100ms
,因为参数扩展最多删除并包括第一个非数字字符。在这种情况下,我想保留第一个非数字字符。我将如何通过修改上述文本来做到这一点?
bash - bash 子字符串替换可以使用正则表达式吗?
给定一个字符串,例如
如何使用 bash 子字符串替换来删除给定的子字符串及其相邻的空间(可能存在也可能不存在)?
例如,这会导致额外的空格:
在我的实际代码中,我不会提前知道子字符串是什么或它在字符串中的位置,因此它是否有前导或尾随空格是未知的。我想做这样的事情,就像你在 中所做的那样sed
,但它当然没有用:
在sed
中,我会使用类似的东西sed -e 's/ *val2 */ /'
,但我想在 bash 中完成所有这些。
有没有办法定义子字符串,使模式包含零个或多个空格 + 'val2' + 零个或多个空格?
shell - 命令 s 标志的输出上的 Zsh 参数扩展不起作用
在 zsh 中,如果我运行:
我得到foo
了你所期望w
的(导致索引引用单词s:, :
成为,
单词分隔符)。
但是,如果我尝试结合这些:
我明白了foo,
。由于某种原因,该w
标志工作正常,但该s:, :
标志被完全忽略。
我在这里做错了什么?
更多信息:这只是 ${} 中的 $() 的问题。如果我将 ${} 嵌套在 ${} 中,就不会有这样的问题。
bash - Bash 字符类参数扩展不一致的行为
以下是似乎向我暗示 bash 中的错误的所有步骤。
版本和平台信息
问题的详细步骤:
为什么 '*[:alpha:]' 会列出 'a*' 文件名而不是 'b*' 文件名?
对于那些想知道,为了获得正确的行为,必须使用 *([[:alpha:]])。但这并不能解释这里显示的不一致。
bash - Bash:如何使用运算符参数扩展 ${parameter@operator}?
我用谷歌搜索并尝试了很多东西,但从来没有用 ${parameter@operator} 得到任何东西。我发现的只是指向相同文档的更多链接。所以我认为用实际例子来正确回答对理解它很有帮助。
文档说:
${参数@操作员}
扩展要么是参数值的转换,要么是有关参数本身的信息,具体取决于运算符的值。每个运算符都是一个字母:
Q
扩展是一个字符串,它是以可重复用作输入的格式引用的参数值。
它还提到了引用:
3.1.2 引用
引用用于去除某些字符或单词对shell 的特殊含义。
所以我的推理是这个(特殊字符$)的输出:
应该是这样(在“”之间,'\'被删除,所以需要再次引用以用作输入):
但我得到:
我尝试了不同的组合:
无济于事。
实际上,我尝试使用的任何运算符总是会产生错误的替换错误。这些似乎是 bash 非常晦涩的功能。我已经从这篇文章中省略了大约半小时的尝试,每一个都比以前更扭曲!
bash - 在 bash 中,dir=${0%/*} 是什么意思?
我在研究 bash 脚本时发现了这段代码:
我怀疑大括号内的代码是正则表达式,但我不明白它的含义。任何想法?