sh脚本中没有这样的文件或目录

时间:2015-04-09 21:42:18

标签: scripting debian sh

查找此错误消息的来源:

Processing: +([^_]).flv
date: +([^_]).flv: No such file or directory

我在最近几个月的某个时候开始得到这个(不能说我什么时候没有记录我的cron输出。我知道,我知道!)。

当我最初写这篇文章时,它至少工作了两个月。我想知道是否有一个sh更新打破了它?

该脚本通过crontab运行,并获取当前目录中没有下划线的所有.flv文件并处理每个文件。然后检查修改日期以查找过去24小时内创建的文件,并为.flv文件运行yamdi元标记注入器。

似乎它没有将模式识别为模式并将其视为实际文件给我。如果我从ssh shell运行这个脚本它可以正常工作,只有当它通过cron运行它才会出现这个错误。

shopt -s extglob
now=$(date +"%s")
for f in +([^_]).flv; do
   echo "Processing: $f"
        age=$(date -r  "$f" +"%s")
        calc=$(((now-age) / 60 / 60))
        if(( calc < 24 )); then
                echo "$f age=$calc"
                yamdi -i "$f" -o "$f".seek
                rm "$f"
                cp "$f".seek "$f"
                touch -d @$age "$f"

        fi
done

1 个答案:

答案 0 :(得分:1)

这很可能是使用错误shell的问题;确保你的脚本的第一行代表正确的shell:

#!/bin/bash

对于bash,或者你为此写的任何shell。您可能想要检查cron可能设置的环境变量(这是一个非常常见的问题 - 假设所有内容都已正确设置,但cron为其执行的脚本提供的环境不同)。