问题标签 [command-substitution]

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

shell - sed:如何在嵌入式 shell 命令中使用记住的模式?

我有一个 GNU makefile,其中的配方行之一是:

这个想法是替换<span class="math">$$\(.*\)$$</span>

经过<span style="font-size:100%">..SVG..</span>

where..SVG..是执行 shell 命令返回的字符串curl -d "type=tex&q=\1" http://localhost:16000/, where\1应该是先前记住的模式\(.*\)

问题:模式检测和 shell 执行都工作正常。但是,\1不会被先前记住的模式所取代。

PS:如果更喜欢sed-r选项一起使用,里面的匹配makefile如下:

0 投票
2 回答
242 浏览

bash - 将波浪号扩展与bash中的变量替换相结合

假设我以 root 身份运行 bash,并且我想 chown 用户的主目录ada。还要说它ada存储在一个名为的变量中$USER(因为我是从脚本中执行此操作的)。

当我尝试以下操作时,

外壳首先执行波浪号扩展,因此它尝试 chown /home/root/ada,而不是/home/ada.

有没有办法通过嵌套的替换和正确的转义来做到这一点?

0 投票
1 回答
49 浏览

bash - 管道/使用 STDOUT 作为单个字符串,而不是空格分隔的单词序列

我想使用 perl 单线计算使用正则表达式替换的结果文件名。当进行试运行并简单地打印结果时,它会给我想要的结果(那里还没有引号):

for i in *_\ *; do echo "${i}" $(perl -ne 'print s/(?<![_ ])_ /-/gr' <<< "${i}"); done

但是当更改为mv它时,它会中断:

for i in *_\ *; do mv "${i}" $(perl -ne 'print s/(?<![_ ])_ /-/gr' <<< "${i}"); done

mv: target ‘9781430249146.pdf’ is not a directory

显然 perl 的输出被重新解释并且空格导致问题。当我在它周围加上双引号时,perl 代码首先由 bash 评估,这会产生另一个问题:

for i in *_\ *; do mv "${i}" "$(perl -ne 'print s/(?<![_ ])_ /-/gr' <<< "${i}")"; done

-bash: ![_: event not found

有什么方法可以仅引用命令替换的输出(而不是命令本身)?

0 投票
0 回答
152 浏览

bash - 在命令替换中设置变量

我试图将 HTTP 代码和curl命令的输出作为 shell 脚本的一部分,但反过来我又试图将它们都设置为变量。我的代码(使用pushbullet API)如下所示:

理论上应该设置$CURL_OUTPUT为返回的 JSONcurl$HTTP_CODE我得到的状态码。相反,我只得到$CURL_OUTPUT; $HTTP_CODE是空的。

但是,如果我不做外巢,像这样:

该命令按预期工作;我将 JSON 重定向到标准输出,状态码以$HTTP_CODE.

那么有可能同时获得两个输出吗?我可以在命令替换行中分配变量吗?

0 投票
3 回答
178 浏览

bash - 增加变量的bash替换调用

我正在尝试定义一个 bash 函数,它返回一个递增的 id,我可以使用 bash 替换直接访问它:

但是变量没有增加,我不知道为什么。

请问,有人对这种行为有解释吗?

0 投票
3 回答
4207 浏览

bash - 使用字符串替换的命令替换

是否可以按照以下方式做一些事情:

我很确定我在某个地方看到了类似的工作示例,但这会导致“错误替换”错误。

我知道还有其他方法可以做到这一点,但这么短的 oneliner 会很有用。我错过了什么还是这是不可能的?

0 投票
1 回答
53 浏览

bash - bash 命令替换中的脚本逻辑

我在脚本中有以下代码段:

在其他地方,我必须通过文件描述符传递 PIN,因此这里的重定向和命令替换。

的输出validate_pin是输入 PIN 的修改值,但退出代码确定它是否成功和有效。error_handler为了管理任何故障,我可以投入什么?

如果我有exit,它只会退出命令替换子shell。FAIL=1一旦命令替换子shell关闭,分配的变量(等)也会被清除。读取文件描述符检查工作,但随后关闭,后续进程无法使用。

0 投票
3 回答
419 浏览

bash - Bash IFS ('\n'):通过 find 命令和 for 循环检测文件名的问题

命令替换是否正确?该变量不适用于 for 循环中的 IFS \n,我不明白为什么会发生这种情况。

for 循环应该通过逐行处理 find 的输出来处理带有空格的文件名(这就是我使用 IFS \n 的原因)。

0 投票
1 回答
145 浏览

bash - 添加使用命令替换的脚本/命令/别名

我有一个我希望能够运行的命令,我通常会在我的 Mac 启动时运行它。我尝试这样做的方式是在以下位置创建别名~/.bash_profile

boot2docker shellinit输出一些需要执行的命令。例如:

我遇到的问题是,当打开一个新的 shell 时,$(boot2docker shellinit)会执行并执行上述export命令,或者如果 boot2docker 虚拟机未处于活动状态,则会失败。

组织这个(别名、脚本等)的正确方法是什么,如果使用命令替换是正确的方法?

0 投票
1 回答
133 浏览

bash - Bash 中 tty 的命令替换

命令:

输出:

命令:

输出:

与当前终端连接的文件是/dev/pts/0. 两个命令不应该产生相同的输出吗?我在这里想念什么?