首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl脚本中的Bash脚本挂起

Perl脚本中的Bash脚本挂起
EN

Unix & Linux用户
提问于 2020-02-11 20:31:00
回答 3查看 612关注 0票数 0

我正在Mac上的Perl脚本中运行一个小bash脚本,但是bash脚本在完成后似乎会挂起。Perl脚本不会拾取并继续。bash脚本在shell窗口中工作得很好。

这是剧本

代码语言:javascript
复制
for f in *.flac
do
    /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3"
done

我就是这样称呼它的

代码语言:javascript
复制
my $mp3Status = system ("/Users/user/bin/flac2mp3_0.sh"); 
EN

回答 3

Unix & Linux用户

发布于 2020-02-11 23:08:11

不需要指定bash吗?

代码语言:javascript
复制
system("/bin/bash /Users/user/bin/flac2mp3_0.sh");

编辑:如果仍然不能工作,请尝试使用此语法(相同,但在末尾使用管道)

代码语言:javascript
复制
system("/bin/bash /Users/user/bin/flac2mp3_0.sh|");
票数 0
EN

Unix & Linux用户

发布于 2020-02-12 00:21:56

确保bash脚本的顶部有shebang #!/bin/bash,然后将退出0添加到脚本的末尾,以便其他程序知道它已成功退出。

代码语言:javascript
复制
#!/bin/bash
for f in *.flac
do
    /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3"
done
exit 0

让我们尝试另一种方式

代码语言:javascript
复制
#!/bin/bash
find -name "*.cfg" -type f -exec /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3" {} \;
done
exit 0
票数 0
EN

Unix & Linux用户

发布于 2020-02-12 03:34:48

解决了!!我更改了Perl脚本中的引用:

代码语言:javascript
复制
@sysCmd=(`/usr/local/bin/ffmpeg` , '-' , "$t" , ' -aq 1', '${t%flac}mp3');
system (@sysCmd);

现在,我可以处理Perl脚本的其余部分。感谢所有提出一些想法的人。

票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/567029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档