我的意思是都进去不判断
时间: 2023-11-24 19:06:02 浏览: 63
如果修改了判断条件后,monitor 函数仍然不执行判断语句,那么可能是因为 if 语句中的条件表达式有误,导致无法正确判断目录中是否存在以 .log 结尾的文件。
你可以在 if 语句前面加上 set -x 命令,这样脚本会输出执行过程中的每一条命令,以便你排查问题。例如:
```
#!/bin/bash
# 定义变量
log_dir="/var/log/program_monitor"
# 创建日志目录
mkdir -p "${log_dir}"
log_file="${log_dir}/$(date +%Y%m%d%H%M).log"
function monitor(){
set -x
if [ -e "/var/log/program_monitor/*.log" ];then
echo "1"
latest_log=$(ls -1t /var/log/program_monitor/*.log | head -1)
echo "2"
date_str=$(echo $latest_log | cut -d'/' -f5 | grep -oE '[0-9]{8}')
echo "3"
latest_time=$(date -d "$date_str" +%s)
current_time=$(date +%s)
echo "4"
if [ "$date_str" -eq "$latest_time" ]; then
echo "---------$(date)----------" >> $log_file
else
touch ${log_file}
fi
else
touch ${log_file}
echo "5"
fi
}
monitor
```
这样执行脚本后,就会输出执行过程中的每一条命令,你可以根据输出的信息来确定问题所在。
另外,你可以在 if 语句前面加上一条 echo 命令,输出判断条件的结果,以便你确定条件表达式是否正确。例如:
```
#!/bin/bash
# 定义变量
log_dir="/var/log/program_monitor"
# 创建日志目录
mkdir -p "${log_dir}"
log_file="${log_dir}/$(date +%Y%m%d%H%M).log"
function monitor(){
echo "[DEBUG] $(ls -1 /var/log/program_monitor/*.log)"
if [ -e "/var/log/program_monitor/*.log" ];then
echo "1"
latest_log=$(ls -1t /var/log/program_monitor/*.log | head -1)
echo "2"
date_str=$(echo $latest_log | cut -d'/' -f5 | grep -oE '[0-9]{8}')
echo "3"
latest_time=$(date -d "$date_str" +%s)
current_time=$(date +%s)
echo "4"
if [ "$date_str" -eq "$latest_time" ]; then
echo "---------$(date)----------" >> $log_file
else
touch ${log_file}
fi
else
touch ${log_file}
echo "5"
fi
}
monitor
```
这样执行脚本后,就会输出目录下所有以 .log 结尾的文件名,以便你确定目录是否存在符合条件的文件。
阅读全文