我正在Mac上的Perl脚本中运行一个小bash脚本,但是bash脚本在完成后似乎会挂起。Perl脚本不会拾取并继续。bash脚本在shell窗口中工作得很好。
这是剧本
for f in *.flac
do
/usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3"
done
我就是这样称呼它的
my $mp3Status = system ("/Users/user/bin/flac2mp3_0.sh");
发布于 2020-02-11 15:08:11
不需要指定bash吗?
system("/bin/bash /Users/user/bin/flac2mp3_0.sh");
编辑:如果仍然不能工作,请尝试使用此语法(相同,但在末尾使用管道)
system("/bin/bash /Users/user/bin/flac2mp3_0.sh|");
发布于 2020-02-11 16:21:56
确保bash脚本的顶部有shebang #!/bin/bash,然后将退出0添加到脚本的末尾,以便其他程序知道它已成功退出。
#!/bin/bash
for f in *.flac
do
/usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3"
done
exit 0
让我们尝试另一种方式
#!/bin/bash
find -name "*.cfg" -type f -exec /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3" {} \;
done
exit 0
发布于 2020-02-11 19:34:48
解决了!!我更改了Perl脚本中的引用:
@sysCmd=(`/usr/local/bin/ffmpeg` , '-' , "$t" , ' -aq 1', '${t%flac}mp3');
system (@sysCmd);
现在,我可以处理Perl脚本的其余部分。感谢所有提出一些想法的人。
https://unix.stackexchange.com/questions/567029
复制相似问题