私の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スクリプトの残りの部分を操作できます。アイデアを提供してくれた皆さんに感謝します。