Answers:
您正在使用相对路径,您的脚本在其中寻找.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
*.mp4
任何文件匹配,因此将其视为文字文件名,并尝试打开名为*.mp4
(有效的文件名)的文件,但由于没有文件而失败*.mp4
在当前目录中调用。有人可能会认为*.mp4
总是扩展到匹配文件名列表,该文件名可以为空(在这种情况下,for
循环将不执行任何操作,但不会引发任何错误),事实并非如此:*.mp4
总是扩展为某种文件名。
bash
)是正确的,但并非总是如此;看nullglob
/ failglob
。