写了一个非常简单的脚本用于筛选日志并且归档,但是不知道如何写条件来保证输入的日期所对应的日志文件是否存在,比如 5 月份如果并没有日志产生,那希望程序提示并退出
#!/bin/bash
syslog_path="/var/log/dcmc_syslog_devices"
read -p "Enter IP to clear the desired directory: " ip_syslog_path
read -p "Enter desired date to clear[YYYY-MM]: " desired_date
desired_path="/var/log/dcmc_syslog_devices/${ip_syslog_path}"
if [ ! -d ${desired_path} ]; then
echo "Log directory does not exist! Script exited."
exit 1
fi
if [ ! -f ${"/var/log/dcmc_syslog_devices/${ip_syslog_path}/${ip_syslog_path}-${desired_date}*.log"}]; then
echo "Desired log is not available! Script exited."
exit 1
fi
#Packing syslog
echo $(date +"%Y-%m-%d %H:%M:%S")
echo "Start packing syslogs..."
sudo tar -zcvf ${desired_path}/${ip_syslog_path}-${desired_date}.tar.gz ${desired_path}/${ip_syslog_path}-${desired_date}*.log
由于日志文件最后是包含日期的所以一直使用"*"来覆盖后面的日,现在也不知道怎么修改,但是问题应该在于我的第二个条件中的这种写法是不被支持的,有没有大佬来说下这个该怎么调整啊,感谢!
1
jason1121 2020-06-08 15:12:08 +08:00
文件名中干嘛要有星号呢,处理起来不会麻烦么;
这一串 ${"/var/log/dcmc_syslog_devices/${ip_syslog_path}/${ip_syslog_path}-${desired_date}*.log"} 干嘛要用{}括起来,他又不是一个变量,直接 [ ! -f /path/to/file ] 就够了; 而且 ] 前和[ 后是要有一个空格的,你]前也漏了空格 |