我试图在Linux中获取文件是否被修改的状态。 我正在使用这段代码,它运行良好,但它有一个问题,它在第一个“if”语句后退出。
它不寻找elif声明。 如果文件在最近2分钟内没有被修改,我正试图得到“警告”,如果它仍然没有被修改4分钟,它应该给我“关键”。 它总是显示警告或行,但不考虑elif声明。 我正在使用的代码
#!/bin/bash # How to execute ./sensor.sh tem_sensor HOUR=$(date +%H) MIN=$(date +%M) # Directory where they are sensor directorys DIR=/home/robbin/Desktop/sensor_collection/ # Name of selected sensor SENSOR=$1 # Name of sensor's directoris SENSORS=(sensor1) # Loop in every folder for i in ${SENSORS[@]} do # We only want the specified sensor so we will skip until we found it if [[ $SENSOR != $i ]]; then continue ; fi # You take the hour and minute value from last file LHOUR=$(ls -lrt $DIR/$i| tail -n1 | awk '{ print $8}' | awk -F ':' '{ print $1}') LMIN=$(ls -lrt $DIR/$i | tail -n1 | awk '{ print $8}' | awk -F ':' '{ print $2}') # We calculate the diferences let FHOUR=$(( HOUR - LHOUR )) let FMIN=$(( MIN - LMIN )) # if the diference is greater than 2 if ([ $FMIN -gt 02 ] && [ $FMIN -lt 04 ]); then echo "WARNING - More than 2 minutes without recieving data" exit 1 # We put warning! # Else if it is not more than 2 # We check if we have an hour of diference! elif [[ $FMIN -gt 04 ]]; then echo "CRITICAL - More than 4 minutes without recieving data" exit 2 # We put Red alert! else echo "OK - We recieve data" exit 0 # Green alert if we dont have problems fi done echo "UNKNOW - Sensor not found" exit 3
如果有人帮我解决这个问题。 考克斯似乎没有问题,它应该预计工作。 我是新的bash脚本。 我会很感激。 。
你可以重新安排你的if-else语句如下:
if [[ $FMIN -gt 04 ]]; then echo "CRITICAL - More than 4 minutes without recieving data" exit 2 # We put Red alert! elif [[ $FMIN -gt 02 ]]; then echo "WARNING - More than 2 minutes without recieving data" exit 1 # We put warning! else echo "OK - We recieve data" exit 0 # Green alert if we dont have problems fi
这是更简单的阅读,应该做你想做的。
您需要交换if和elif子句中的条件。 第一个条件匹配两个案例,所以第二个条件从来没有得到检查。