shell脚本使用==判断相等报错

在这里插入图片描述


这个错误的原因是你使用了 == 比较符,而 /bin/sh (或一些系统的默认 sh 解释器) 可能不支持它。对于 POSIX 兼容的 shell(如 /bin/sh),应该使用单个等号 = 来进行字符串比较。

可以通过以下两种方式修正这个问题:

  1. 使用单个等号 = 进行字符串比较。
  2. 显式地使用 /bin/bash 作为解释器,因为 bash 支持 ==

方法 1:使用 = 比较符

#!/bin/bash

# 遍历 REPO_LIST 中的每个仓库路径,并执行 git checkout
for repo in "${REPO_LIST[@]}"; do
    echo "Updating $repo to Cert tag"
    
    # 使用 repo forall 定位到指定仓库,并切换到 Cert 标签
    repo forall -c '
        if [ "$REPO_PATH" = "'$repo'" ]; then
            echo "Checking out Cert in $REPO_PATH"
            git checkout Cert
        fi
    '
done

echo "All specified repositories have been updated to Cert tag"

方法 2:强制使用 bash

如果你的系统上默认的 shell 是 dash 或其他不支持 == 的 shell,但你更喜欢用双等号,可以强制脚本在 bash 下运行:

#!/bin/bash

# 要更新到 Cert 标签状态的仓库路径列表
REPO_LIST=(
    # 列表省略...
)

# 遍历 REPO_LIST 中的每个仓库路径,并执行 git checkout
for repo in "${REPO_LIST[@]}"; do
    echo "Updating $repo to Cert tag"
    
    # 使用 repo forall 定位到指定仓库,并切换到 Cert 标签
    repo forall -c '
        if [ "$REPO_PATH" == "'$repo'" ]; then
            echo "Checking out Cert in $REPO_PATH"
            git checkout Cert
        fi
    '
done

echo "All specified repositories have been updated to Cert tag"

总结来说,推荐的修复方法是使用 POSIX 兼容的 = 比较符来确保脚本能在更多的环境中运行。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值