我使用一个简单的脚本从 .mp4 文件创建 .mp3s:
#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done
Run Code Online (Sandbox Code Playgroud)
从桌面运行或通过终端调用时,脚本运行良好。但是,当从外部脚本调用脚本时,它无法运行,返回
“*.mp4:没有这样的文件或目录”。
我怀疑问题出在外壳扩展上,但在这种情况下无法解决如何修复它。
hee*_*ayl 13
您使用的是相对路径,您的脚本在其中查找.mp4
当前目录中的文件,即运行脚本的目录,并发现不.mp4
存在此类文件,然后查找文字*.mp4
文件(假设nullglob
/failglob
不是设置,这是默认值),并且该文件也不存在,因此错误消息*.mp4: No Such File or Directory
.
您应该改用绝对路径:
for i in /directory/*.mp4; do ...; done
Run Code Online (Sandbox Code Playgroud)
替换/directory/
为实际目录路径;如果您愿意,您也可以将目录名称作为第一个参数:
for i in "$1"/*.mp4; do ...; done
Run Code Online (Sandbox Code Playgroud)
您可以在此处使用绝对路径或相对路径,但绝对路径始终是更安全的选择。
现在以通常的方式调用可执行脚本:
/path/to/script.sh /directory
Run Code Online (Sandbox Code Playgroud)
从脚本目录:
./script.sh /directory
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
446 次 |
最近记录: |