shell脚本问题

shell脚本问题

创建一个 shell 脚本来测试文件是否存在。如果是,它将回显删除文件的时间戳格式为 YYYYMMDD-HH:MM:SS 日期命令的日志并删除文件,并使用 at 命令重新安排自身运行 5 分钟后

if (( test -f /tmp/norun ))
then
    echo " removing /tmp/norun" 'data +%Y%m%d-%T'>>s30928290.log
    #rm /tmp/norun
    #timesh='date --date="1 minute"
    at -f /home/s300928290/s300928290.at now + 5 miniutes
else
    echo "hello world"  'data +%Y%m%d-%T'>>s30928290.log
fi
#echo "none";

我无法运行这个脚本。有人知道为什么吗?

答案1

我已将您的脚本修改为以下内容:

if [[ -f /tmp/norun ]]; then
    echo "Removing /tmp/norun $(date '+%Y%m%d-%T')" >>s30928290.log
    rm -- /tmp/norun
    timesh=$(date --date='1 minute') # This variable is not being used
    at -f /home/s300928290/s300928290.at now + 5 minutes
else
    echo "Hello, world $(date '+%Y%m%d-%T')" >>s30928290.log
fi

正如 Kusalananda 指出的那样,(( ... ))它是一个 bash 算术表达式,对于文件测试无效,因此已将其修改为[[ ... ]].

data当我相信你想要的时候你就有了date。这些也需要放入命令替换中($( ... ))。

另外你的命令拼写minutes错误at

相关内容