Shelljs exec()不执行变量

时间:2018-01-18 04:16:27

标签: 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;
}

错误:找不到dev或添加adb的所有帮助命令并打印出来。

任何人都可以帮忙吗?感谢

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

2 个答案:

答案 0 :(得分:1)

你不能像$A4Y = 300; $y = $pdf->GetY(); $x = $pdf->GetX(); while($products){ $pdf->SetY($y); $pdf->SetX($x); $pdf->multicell($wc=65,5,html_entity_decode($product_desc),0,'L'); $offsety1=$pdf->GetY(); if( ($A4Y-($offsety1+10)) < 48){ $pdf->AddPage(); $y = $pdf->GetY(); $x = $pdf->GetX(); } } 那样在JavaScript中进行字符串插值。 'adb -s $dev'变量不会被其值替换。您可以使用$dev运算符来形成字符串。请参阅下面的代码。

+

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

答案 1 :(得分:0)

使用模板文字,我们可以解决问题。但是变量的变化很小。

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

需要使用在花括号中包装变量来获得所需的结果。