我不知道为什么我的代码无法正常工作。
我正在尝试编辑此yml文件: apktool.yml
...
versionInfo:
versionCode: '1'
versionName: '1.0'
在Windows中,此命令行成功将versionCode修改为“ 2”:
sed -i 's/versionCode: \'1\'/versionCode: \'2\'/g' app-debug\\apktool.yml
但是,从同一目录执行的此nodeJS代码无法修改文件:
const {exec} = require('child_process');
const {promisify} = require('util');
const exec_async = promisify(exec);
await exec_async("sed -i 's/versionCode: \'1\'/versionCode: \'2\'/g' app-debug\\apktool.yml")
.catch(err => {console.log(err)});
未捕获任何错误,并且未修改文件。我还尝试在命令之前“休眠5”,以确保这不是时间问题。知道这里有什么问题吗?
答案 0 :(得分:1)
好的,那真是令人震惊,但解决了: sed命令需要包含双引号以包含单引号,并且nodeJS exec参数也应该包含在转义的双引号中。这可行:
NULL