【问题标题】:BASH Comparing value (size of file) in variable to numberBASH将变量中的值(文件大小)与数字进行比较
【发布时间】:2021-07-29 02:54:27
【问题描述】:

我正在尝试做一个简单的比较来确定一个变量是否 > 一个特定的数字。如果是,做一件事;如果没有,做另一个。但是这种比较是行不通的。 (注意。我是 bash 脚本的相对新手)

我有一个名为 eab_photos.zip 的文件。如果压缩档案大于 100 兆,我需要将档案分成多个部分。 (那部分代码工作正常。)

echo $actual_size
if [[ $actual_size > 100 ]]
then
    echo "Big"
else
    echo "small"
fi

$actual_size 为 21,但无论比较值(100 或 10)如何,我的代码都会回显“Big”

我也试过

if [ $actual_size > 100 ]

【问题讨论】:

  • 总是引用你的变量。你应该使用"$actual_size"。但是你不需要引用字符串,写echo small是完全有效的。
  • 请注意,使用> 100,您在目录中创建了一个名为100 的空文件。记得删除它。

标签: bash if-statement variables


【解决方案1】:

[[ 中,> 运算符进行字符串比较。所以这是一个字典比较而不是数字。在[ 中,> 运算符是一个文件重定向。试试:

if [ "$actual_size" -gt 100 ]; then ...

【讨论】:

  • 或者使用算术条件:if ((actual_size > 100))
  • shellcheck.net 会发现这一点(以及许多其他常见错误)。强烈推荐。
猜你喜欢
  • 2018-03-17
  • 1970-01-01
  • 2015-08-14
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多