外部调用脚本不起作用

M.街

我使用一个简单的脚本从.mp4文件创建.mp3:

#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done

从桌面运行或通过终端调用时,脚本运行良好。但是,当从外部脚本调用该脚本时,该脚本无法运行,返回

“ * .mp4:无此类文件或目录”。

我怀疑问题出在外壳扩展上,但是无法解决这种情况下的解决方法。

血红素

您正在使用相对路径,您的脚本在其中查找.mp4当前目录(即运行脚本的目录)中的.mp4文件,并发现不存在此类文件,那么它将查找文字*.mp4文件(假设nullglob/failglob不是设置(默认设置),并且该文件也不存在,因此出现错误消息*.mp4: No Such File or Directory

您应该改用绝对路径:

for i in /directory/*.mp4; do ...; done

替换/directory/为实际目录路径;如果您愿意,也可以将目录名称作为第一个参数:

for i in "$1"/*.mp4; do ...; done

您可以在此处使用绝对路径或相对路径,但绝对路径始终是更安全的选择。

现在以通常的方式调用可执行脚本:

/path/to/script.sh /directory

从脚本目录:

./script.sh /directory

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章