问题标签 [variable-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.
bash - BASH 更好的方式来做一个回顾?
嘿伙计们,我想知道是否有一种聪明的方法可以在 bash 中回顾一段时间
似乎我应该能够以某种方式在我的扩展中做到这一切?
bash - BASH:星号作为参数
我写了一个小 BASH 脚本,它接受一个简单的配置并获取预配置的 3rd 方存储库,并从中下载某些包。
我目前遇到的问题是,当我在配置中使用星号时,它会在执行脚本时采用我所在的目录,并将目录中的所有文件作为参数展开。我了解单引号和双引号之间的区别,但似乎无论我做什么,我都无法让它工作。也许有人可以帮我解决这个问题。这是脚本:
示例配置 (/opt/configs/repos/.repos/configs/mysql:
PACKAGES
当该选项设置为其他任何内容时,我对软件包的下载没有任何问题*
,因此我不会发布任何回购配置(因为我知道存储库工作)。
我从当前目录运行它:
当我运行脚本时:
我想要的输出是:
这次运行的调试输出在这里:
在此先感谢 - 这真的让我陷入了困境......
powershell - 如何使用可变参数执行 dos 命令
如果我运行:
它运行。但如果我尝试:
它失败了,因为变量没有被扩展。
在 powershell 中完成此任务的最简单方法是什么?
bash - 使用带有 "${parameter:-word}" 参数扩展的引号
如果未设置变量,则使用${parameter:-word}
参数扩展的形式评估为默认值时,引号的最佳做法是什么?
例如,假设一个带有-u
set 的 Bash shell 脚本(在评估未定义或未设置的变量时生成错误),以测试变量是否具有值,编写等价物的最佳方法是if [[ -z "$FOO" ]]
什么?
或者
或者是其他东西?
bash - 如何引用 bash 标志参数以通过一个 getopts 调用并被第二个解释?
脚本nerf
调用脚本herd
,脚本调用脚本er
。 nerf
使用一个标志herd
,明确接受需要传递给的参数er
。
这在以前不是问题nerf
- 当herd
刚刚从命令行调用时,我们可以单引号将参数传递给 -p 标志,它们永远不会被herd
's解释getopts
,而是会被er
's解释getopts
。
但是现在我们已经在最终需要转到的标志中生成了值er
,所以我需要在 中扩展变量,但$file_contents
在它们到达之前nerf
不要让它们被解释。getopts
er
这三个脚本中的任何一个都可以修改。
如果我在上面的标记行上使用单引号,我会得到传递的文字字符串 "$er_args"。使用双引号,标志直接由herd
. 使用单引号内的双引号,任何 getopts 都不会解释标志。
我认为这里没有优雅的解决方案,但如果我错了,请告诉我。我能想到的唯一解决方案是糟糕的:
- 通过 . 显式公开所有
er
的标志herd
。 - 从 中删除
er
呼叫herd
并将其直接放入nerf
. - ???
ksh - ksh 中包含 * 的路径变量
我正在使用 Mac。我有一个名为 1 的目录。目录Test内的A(名称中有空格)
现在,下面的 ksh 脚本
生产
因此看起来 print 和 cd 都可以识别模式“1.A”,但 touch 不能。为什么?
tcl - 将参数扩展 {*} 与多个语句一起使用
我{*}
在 tcl 中用于参数扩展并遇到了这个问题。
如您所见,我定义了 reset 变量,并且正在评估 witheval
和 with {*}
。
虽然eval
工作正常,但{*}
抛出错误为
然后我将变量更改reset
如下,
即我已经删除了第二条set
语句并且代码工作正常。
为什么{*}
使用一个语句可以正常工作,而不是更多?或者我在这里缺少什么?
bash - 通过echo在标量变量中扩展bash参数
标题:标量变量内的 bash 参数扩展
我有一个 bash 脚本,它在两个文件之间运行差异。如果有差异,我希望它打印 statement1 和 statement2 它们很长,所以我将它们放入变量中,但 echo 语句不会扩展参数。这可以在bash中完成吗?
该脚本似乎有效 - 它在需要查找差异时找到了差异。然而,这是它打印出来的。
我想让它说
arrays - 如何在zsh中扩展数组的元素?
假设我在 zsh 中有一个数组
我想附加.txt
到每个元素
所以输出是
更新:
我想我可以做到这一点,但我认为有一种更惯用的方式:
bash - 在 for 循环中重击任意 glob 模式(带空格)
有没有办法可靠地使用存储在变量中的任意通配模式?如果模式同时包含空格和元字符,我会遇到困难。这就是我的意思。如果我将模式存储在没有空格的变量中,那么事情似乎就可以正常工作:
但是,一旦我在模式中添加一个空格,事情就会变得站不住脚:
显然,如果我事先知道模式,我可以手动转义它:
问题是,我正在编写一个事先不知道模式的脚本。有什么方法可以可靠地使 bash 将变量的内容视为通配模式,而不使用某种eval
诡计?