내 Mac에서 Perl 스크립트로 작은 bash 스크립트를 실행하고 있는데 bash 스크립트가 완료된 후 정지되는 것 같습니다. Perl 스크립트는 계속 실행되지 않습니다. bash 스크립트는 쉘 창에서 잘 실행됩니다.
이게 스크립트야
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");
답변1
Bash를 지정할 필요가 없나요?
system("/bin/bash /Users/user/bin/flac2mp3_0.sh");
편집하다: 그래도 작동하지 않으면 이 구문을 사용해 보세요(동일하지만 끝에 파이프가 있음).
system("/bin/bash /Users/user/bin/flac2mp3_0.sh|");
답변2
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
답변3
해결되었습니다! ! Perl 스크립트에서 참조를 변경했습니다.
@sysCmd=(`/usr/local/bin/ffmpeg` , '-' , "$t" , ' -aq 1', '${t%flac}mp3');
system (@sysCmd);
이제 Perl 스크립트의 나머지 부분을 작업할 수 있습니다. 아이디어를 제공해주신 모든 분들께 감사드립니다.