问题标签 [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 让变量默认为用户输入
我想为交互式和批量使用编写一个脚本。如果未提供参数,脚本将要求用户输入。
与这里不同,如果变量已经由参数定义,用户不应该被打扰。
使用参数扩展我试过这个:
...但我总是得到一个command not found
错误。
有什么建议么?
windows - 奇怪的 Windows 10 批量兼容性问题
我刚刚升级了 Windows 10。但是我写的批处理文件不能完全工作。相同的编码适用于 Windows 7。这就是一段代码。
第一部分照常工作。altyazi.txt 给出了正确的输出。但是当出现 list.txt 时,所有的输出都是 Echo 关闭。我从来没有见过这样的事情。适用于 7,但不适用于 10。
awk - AWK - 我怎样才能得到它们之间相等的值?如果 ... $1== $1?
我正在处理一份 DNA 序列列表。我想获得所有具有相同名称($ 1)的序列。我在想用if ($1 == "$1")
. 但这不起作用。
结果文件:
脚本:
如何传递$1
给我的 awk 命令?
powershell - 展开单引号内的变量
如何$pw
在单引号内展开?
regex - 正则表达式组和其他变量的 Powershell 扩展
我正在尝试使用正则表达式来匹配和替换文件中的文本。我也在使用捕获组。在替换文本中,我使用了我想要扩展的捕获组和其他变量。问题是,当其他变量的值以数字开头时,它们会被扩展,我假设正在尝试扩展为不存在的捕获组。
这是替换前的文字
这是替换后的文本,使用 101 作为 Read-Host 命令的输入。
并使用它来匹配和替换文本
Merchant 始终是一个数字,因此当用户为商家输入类似 101 的内容时,替换文本看起来好像已扩展到 $1101,因此我假设 powershell 正在寻找当然不存在的第 1101 个捕获的组。
我是 powerhsell 的新手,语法对我来说有点奇怪,不知道该怎么做。
batch-file - 不一致的“命令的语法不正确”错误
我想我一开始就很生气地使用批处理文件,但是这个问题让我把头发扯掉了!下面的批处理脚本通常工作得很好。但是,在第一次运行时,它会给出“命令的语法不正确”的错误;它会一直这样做,直到我REM
把所有东西都搞定,运行它,然后取消REM
它。然后它神奇地再次开始工作!
如果我REM
退出@echo off
,它似乎失败了,因为变量替换有时 - 由于未知原因 - 不起作用。然后,当它到达时sed
,它就放弃了。
我想我错过了一些东西......任何想法可能是什么!?(除了我的弹珠!)
bash - 使用 '/' 的 Bash 变量扩展
在 while read line 循环中,我看到了这个变量扩展${line/device name:}
。我试过用我自己的输入文件运行脚本,它只是打印出这一行。
你能告诉我这个扩展在做什么吗?
node.js - 有没有办法防止在 Windows 命令行中扩展 env 变量的百分比?
我在 Windows 上的 git bash 中使用以下 git 命令:
它显示提交日期 ( %cd
),后跟提交消息 ( %s
)。提交日期用颜色标记包裹:%C(cyan)
开始彩色输出和%Creset
停止彩色输出。
虽然它在 git bash 中运行良好,但在cmd
:%cd%
被 Windows shell 扩展为当前工作目录(相当于$PWD
bash 中)时效果不佳。
因此,当通过 运行该命令时cmd
,我会在第一列中看到当前工作目录而不是提交日期!
混帐巴什:
命令:
实际上,我cmd
自己从来没有直接使用过,我在编写 nodejs (0.12) 脚本时发现了这种行为
它由节点使用cmd
Windows 上的 when 执行)。
一个简单的解决方法可能是引入一个空间以防止%cd%
被发现,即更改
到
然而,这引入了一个冗余空间(我之前删除了另一个空间,%s
但它仍然是一个 hack,需要手动干预)。
有没有办法防止 Windows shell 扩展?
我找到了有关使用%%
或^%
逃避的信息,%
但它们不是这里的解决方案:
理想的解决方案应该与 bash 和 cmd 兼容,而不会产生冗余字符,或者在 javascript 中使用转义函数来转义 Windows 的通用 UNIX-y 命令以防止扩展(如果可以创建这样的转义函数)。
bash - Bash:向带有空格的字符串添加额外的单引号
当我尝试将参数作为变量传递给 bash 中的任何命令时,如果变量值有空格,我可以看到 bash 添加的额外引号。
我正在创建一个文件“some file.txt”并将其添加到变量 $file 中。我正在使用 $file 并将其存储在另一个变量 $arg 中,并在 $file 上加上引号。通过 bash 进行变量扩展后我希望的命令是
但我得到了错误,被执行的实际文件是,
为什么会这样。在这种情况下,bash 变量 expanson 如何工作?
为什么会这样?
makefile - makefile 中的嵌套定义
我对创建 makefile 很陌生,所以这个问题可能是微不足道的。如果我使用了糟糕的编码实践,我将不胜感激。
我正在尝试创建一个基于输入变量创建规则的通用 makefile。在我的帖子末尾是一个“最小”的例子。
我有2个问题。
在第 35 行,我实例化了 meta_template。我希望变量 $(Dirs) 被扩展,然后使用 $(Dirs) 的每个条目调用 meta_template。但它只会扩展到倒数第二个,即。make 的结果以:
make: *** No rule to make target 'Dir03Target01Tag01', needed by 'Dir03'. Stop.
在第 21 行,我想创建一个快捷规则,该规则将所有标签都作为给定示例的先决条件。例如:
Dir01Target02: Dir01Target02Tag04 Dir01Target02Tag05
首先,我很困惑我不能使用
$($$(1)Tags)
但必须使用$$($$(1)Tags)
才能访问相应的标签。(例如存储在 Target01Tags 中)。使用
$(addprefix)
似乎没有像我预期的那样扩展,即结果make Dir01Target01
是:Create Rule Dir01Target01 with Dir01Target01Tag01 Tag02 Tag03
我期望它在哪里:
Create Rule Dir01Target01 with Dir01Target01Tag01 Dir01Target01Tag02 Dir01Target01Tag03
编辑:我找到了问题 2 的答案。我已经$(addprefix $(1)$$(1),$$($$(1)Tags))
更改为$$(addprefix $(1)$$(1),$$($$(1)Tags))
. 我认为这是因为这需要在 2 次运行中扩展。所以在第一次运行之后$(addprefix Dirxx$(1),$($(1)Tags))
仍然存在。
提前致谢。