【问题标题】:value too great for base (error token when comparing git commits基础值太大(比较 git 提交时的错误标记
【发布时间】:2020-12-04 05:10:35
【问题描述】:

我编写了简单的脚本来比较 bash 中的提交值。我在哪里出错。

export GIT_COMMIT=66597933406267ccb159c455b852480698b2c892
export LAST_COMMIT=66597933406267ccb159c455b852480698b2c892

 if [[ -z "$LAST_COMMIT"  || "$LAST_COMMIT" -eq "$GIT_COMMIT" ]]; then
    echo LAST_COMMIT='HEAD~1' > ~/Desktop/build.properties
 fi

commit.sh:第 3 行:[[: 66597933406267ccb159c455b852480698b2c892:值对于基础来说太大(错误标记是“66597933406267ccb159c455b852480698b2c892”)

两个变量值都是动态的。用于测试目的,手动分配。

我可以知道可能是什么问题以及在 shell 脚本中比较它的最佳方法。

【问题讨论】:

    标签: bash git shell


    【解决方案1】:

    -eq 测试用于数字相等,它需要十进制数字。这些输入是十六进制字符串。不是测试数字相等性,而是测试字符串相等性:一个用户将数字编码为00a3 而另一个用户编码为a3 是没有风险的,因为两种编码都来自一个“用户”(Git提交哈希系统)。

    请注意,您可以对这些使用更普遍适用的(非 bash 特定的)[ POSIX 测试:

    if [ -z "LAST_COMMIT" -o "$LAST_COMMIT" = "$GIT_COMMIT" ]; then
        ...
    

    适用于 bash 普通的旧 sh

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      相关资源
      最近更新 更多