我正在尝试创建一个构建脚本的一部分,该脚本创建一个包含有关git repo的信息的文件。如何将2+命令的结果作为字符串。
cmd
我知道问题出在<branch>|<date>|<commit-hash>
。我只是不知道获得像setVisability()
答案 0 :(得分:0)
问题在于,您传递给echo
的论点未被引用。在评估git
个子命令后,您执行的命令如下所示:
echo my-branch-name|Mon Dec 5 09:23:00 2016 -0600|d1a9da04125fd67edea6062e99d0be960220d2a4
shell正确地将管道字符解释为管道。换句话说,它认为您希望将echo my-branch-name
的输出传递给名为Mon
的命令,依此类推。您可以通过在echo
:
var cmd = 'echo "$(git rev-parse --abbrev-ref HEAD)|$(git log -1 --format=%cd)|$(git rev-parse HEAD)"';
我在本地尝试了这个,并将以下内容写入文件:
my-branch-name|Mon Dec 5 09:23:00 2016 -0600|d1a9da04125fd67edea6062e99d0be960220d2a4
修改:这不适用于Windows上的bash,显然是因为child_process.exec
默认使用cmd.exe
。可以使用shell
选项将其指向bash,而是将命令更改为以下适用于OP:
var cmd = 'bash -c \'echo "$(git rev-parse --abbrev-ref HEAD)|$(git log -1 --format=%cd)|$(git rev-parse HEAD)"\'';
答案 1 :(得分:-1)
您不需要命令替换。只需将一个命令的输出直接传递给下一个命令。
var cmd = 'git rev-parse --abbrev-ref HEAD | git log -1 --format=%cd | git rev-parse HEAD';