创建一个 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