Bash 脚本逻辑偶尔会失败

Bash script logic fails occaisionally

此脚本检查文件大小。如果它在“最小大小”之下,它应该 运行 python 脚本。但是,如果它超过最小大小,脚本将不执行任何操作并退出。我遇到的问题是,有时当文件超过最小大小时,python 脚本仍然 运行s。我没看到什么?

#!/bin/bash
    todays=$(date +%m-%d-%Y)
    file_prefix=./csv/data_
    file_suffix=.csv
    file=${file_prefix}${todays}${file_suffix}
    echo $file
    minimumsize=64
    actualsize=$(wc -c <"$file")
    echo 
    if [ "$actualsize" -ge "$minimumsize" ]; then
        echo size is over $minimumsize bytes
    else
        echo size is under $minimumsize bytes
        #Script to run if filesize is under minimum size
        /usr/bin/python3 /home/shannon/scripts/myscript.py 
    fi

可能是文件偶尔丢失了。如果 wcstat 失败,您可以通过替换 0 大小来最轻松地解决这个问题。我一般推荐 stat,因为它实际上并不读取文件,如果文件很大或者脚本没有读取文件的权限,这会很有用。


#!/bin/bash

file=./csv/data_$(date +%m-%d-%Y).csv
minimumsize=64
actualsize=$(stat -c%s $file 2>/dev/null || echo 0)
echo $file
echo

if [ $actualsize -ge $minimumsize ]; then
    echo size is over $minimumsize bytes
else
    echo size is under $minimumsize bytes

    # Script to run if filesize is under minimum size
    /usr/bin/python3 /home/shannon/scripts/myscript.py 
fi