Javascript Shelljs exec()不执行变量

Javascript Shelljs exec()不执行变量,javascript,node.js,shelljs,Javascript,Node.js,Shelljs,Shelljs exec命令不接受变量。我尝试了所有可能的组合,比如使用双引号、单引号、在变量前面赋值$等等。 以下是脚本: #!/usr/bin/env node require('shelljs'); for(let i = 0; i < data.length; i++) { let dev = data[i]; let platform_version = exec('adb -s $dev', {silent:false}).stdout; } #/usr/bin/en

Shelljs exec命令不接受变量。我尝试了所有可能的组合,比如使用双引号、单引号、在变量前面赋值$等等。 以下是脚本:

#!/usr/bin/env node
require('shelljs');
for(let i = 0; i < data.length; i++)
{
  let dev = data[i];
  let platform_version = exec('adb -s $dev', {silent:false}).stdout;
}
#/usr/bin/env节点
要求('shelljs');
for(设i=0;i
错误:未找到dev或添加adb的所有帮助命令并打印出来

有人能帮忙吗?谢谢


注意:adb是一个android工具。您可以使用任何简单的命令行,如echo etc

您不能在JavaScript中执行字符串插值,如
'adb-s$dev'
$dev
变量将不会被其值替换。您可以使用
+
运算符来形成字符串。请参阅下面的代码

let platform_version = exec('adb -s ' + dev, {silent:false}).stdout;
注:
在ECMAScript 6中,您可以使用来获得类似的结果,因为它们允许字符串插值。模板文本写在
`
(反勾号)中。这意味着代码
`adb-s${dev}`
也应该给出所需的结果。

在JavaScript中不能像
'adb-s$dev'
那样进行字符串插值。
$dev
变量将不会被其值替换。您可以使用
+
运算符来形成字符串。请参阅下面的代码

let platform_version = exec('adb -s ' + dev, {silent:false}).stdout;
注:
在ECMAScript 6中,您可以使用来获得类似的结果,因为它们允许字符串插值。模板文本写在
`
(反勾号)中。这意味着代码
`adb-s${dev}`
也应该给出所需的结果。

使用模板文本,我们可以解决这个问题。但是变量有一个小的变化

let platform_version = exec(`adb -s ${dev}`, {silent:false}).stdout;

需要使用大括号包装变量以获得所需的结果。

使用模板文本,我们可以解决此问题。但是变量有一个小的变化

let platform_version = exec(`adb -s ${dev}`, {silent:false}).stdout;

需要使用大括号将变量括起来以获得所需的结果。

您可以尝试这样的操作-exec('adb-s'+dev,{silent:false});仅当变量放置在末尾时,此操作才有效。当一个变量位于shell命令之间时,不确定如何使其工作。我使用模板literalsCan发布了答案,您可以尝试这样的-exec('adb-s'+dev,{silent:false});仅当变量放置在末尾时,此操作才有效。当一个变量位于shell命令之间时,不确定如何使其工作。我用模板literalsThanks Vivek发布了答案。使用模板文字来解决问题,但您需要将变量用大括号括起来。@Indra4ev3r是的,缺少大括号。谢谢你指出。谢谢维韦克的回答。使用模板文字来解决问题,但您需要将变量用大括号括起来。@Indra4ev3r是的,缺少大括号。谢谢你指出这一点。