如何检查文件';s size大于Bash中的某个值

如何检查文件';s size大于Bash中的某个值,bash,shell,Bash,Shell,好的,这里的初学者: 我如何实现以下目标: 我需要检查文件的大小 然后使用if条件和相应的条件语句将此文件大小与固定数字进行比较 到目前为止,我有以下几点: #!/bin/bash # File to consider FILENAME=./testfile.txt # MAXSIZE is 5 MB MAXSIZE = 500000 # Get file size FILESIZE=$(stat -c%s "$FILENAME") # Checkpoint echo "Size of

好的,这里的初学者:
我如何实现以下目标:

  • 我需要检查文件的大小
  • 然后使用if条件和相应的条件语句将此文件大小与固定数字进行比较
到目前为止,我有以下几点:

#!/bin/bash

# File to consider
FILENAME=./testfile.txt

# MAXSIZE is 5 MB
MAXSIZE = 500000

# Get file size
FILESIZE=$(stat -c%s "$FILENAME")
# Checkpoint
echo "Size of $FILENAME = $FILESIZE bytes."

# The following doesn't work
if [ (( $FILESIZE > MAXSIZE)) ]; then
    echo "nope"
else
    echo "fine"
fi
通过这段代码,我可以在变量$FILESIZE中获取文件名,但无法将其与固定整数值进行比较

编辑
两个句法问题

  • bash
    中的变量定义不带空格,它应该是
    MAXSIZE=500000
    ,不带空格
  • 执行比较操作的方式不正确。而不是
    if[($FILESIZE>MAXSIZE))。您可以单独使用
    bash
    自己的算术运算符,将
    [
    运算符跳过为
    if((FILESIZE>MAXSIZE));然后
  • 如果您担心脚本中的语法问题,请使用语法检查脚本并修复从中看到的错误


    作为一般编码实践,在
    bash
    中使用小写用户定义变量,以避免将它们与shell为不同目的解释的特殊环境变量混淆(例如
    $HOME
    $shell

    if[($FILESIZE>MAXSIZE));
    if((FILESIZE>MAXSIZE));
    算术运算符可以用作条件表达式。(您不需要
    (…)
    中的
    $
    #!/bin/bash
    filename=./testfile.txt
    maxsize=5
    filesize=$(stat -c%s "$filename")
    echo "Size of $filename = $filesize bytes."
    
    if (( filesize > maxsize )); then
        echo "nope"
    else
        echo "fine"
    fi