Is it possible to check if a folder exists inside a shell command running in exec?
我正在尝试使用exec在节点中创建一个oneliner。其想法是创建一个名为admin的文件夹,并将文件解压缩到其中,因此:
1 2 | mkdir admin tar xvfz release.tar.gz -C admin/ |
问题是,有时管理员存在(它是确定的,我想覆盖它的内容),并且使用exec将触发一个错误:
1 2 3 | exec('mkdir admin && tar xvfz release.tar.gz -C admin/', (err, stdout, stderr) => { if(err) { //mkdir fails when the folder exist } }); |
如果mkdir失败,是否有办法优雅地继续?理想情况下,我希望清理管理的内容,如rm-rf admin/so,新的untar将重新启动,但同样,该命令将失败。
PS:我知道我可以在午餐前与FS核对文件夹,但我对一个多功能一体的Exec解决方案感兴趣。(如果可能的话)
编辑:只有当目录不存在时,如何使用mkdir这个问题?与此类似,但它仅仅是关于mkdir的特定使用,而是关于连接和错误传播。
您不需要在现有目标上使
1 2 | -p, --parents no error if existing, make parent directories as needed |
把你的一行变成:
1 2 3 | exec('mkdir -p admin && tar xvfz release.tar.gz -C admin/', (err, stdout, stderr) => { // continue }); |
或者,您也可以使用
1 2 3 | exec('mkdir admin; tar xvfz release.tar.gz -C admin/', (err, stdout, stderr) => { // continue }); |