我不明白为什么我的代码不起作用。
我试图编辑这个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”,以确保这不是时间问题。有什么好主意吗?
发布于 2019-05-27 05:45:48
好的,这是一个脑残,但解决了它: sed命令需要包含双引号才能包含单引号,nodeJS exec参数也应该封装在转义双引号中。这样做是有效的:
await exec_async("sed -i \"s/versionCode: '1'/versionCode: '2'/g\" app-debug\\apktool.yml")
https://stackoverflow.com/questions/56327101
复制相似问题