Saya menggunakan skrip sederhana untuk membuat .mp3s dari file .mp4:
#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done
Script berjalan dengan baik ketika dijalankan dari desktop atau dipanggil melalui terminal. Namun ketika skrip dipanggil dari skrip eksternal, skrip tersebut gagal dijalankan, kembali
"* .mp4: Tidak Ada File atau Direktori Seperti Itu".
Saya menduga masalahnya adalah dengan ekspansi shell, tetapi tidak bisa membungkus kepala saya bagaimana memperbaikinya dalam situasi ini.
*.mp4
dengan file apa pun itu menganggapnya sebagai nama file literal dan mencoba untuk membuka file yang disebut*.mp4
(yang merupakan nama file yang valid) dan gagal karena Anda tidak memiliki file dipanggil*.mp4
dalam direktori saat ini. Seseorang dapat berpikir bahwa*.mp4
selalu memperluas ke daftar nama file yang cocok, yang bisa kosong (dan dalam hal inifor
loop tidak akan melakukan apa-apa, tetapi tidak ada kesalahan akan dinaikkan), ini tidak terjadi:*.mp4
selalu berkembang menjadi sesuatu.bash
) tetapi tidak selalu; lihatnullglob
/failglob
.