bash将git命令结果添加到局部变量

问题描述 投票:1回答:1

我正在尝试更改文件的名称,在将文件发送到存储库之前,在我的文件中添加提交数和当前分支名。

但是我收到以下错误:

./publish_to_artifactory.sh:line 4:local:`rev-parse':不是有效的标识符'

upload() {
  local currentBranch=git rev-parse --abbrev-ref HEAD;
  local gitNumberOfCommits=git rev-list --count HEAD;

  for file in ./../*.ipa; do
    mv $file mobile-${currentBranch}-${gitNumberOfCommits};
    echo "uploading zeos-mobile-$currentBranch-$gitNumberOfCommits";
    curl -X PUT -u $PUBLISH_USER:$PUBLISH_PASS -T mobile-$currentBranch-$gitNumberOfCommits; http://example.com/artifactory/ios-dev-local/ --fail
  done
}

upload;

我究竟做错了什么?

git bash
1个回答
2
投票

要将命令的输出分配给变量,需要在bash中使用命令替换语法。

local currentBranch="$(git rev-parse --abbrev-ref HEAD)"
local gitNumberOfCommits="$(git rev-list --count HEAD)"

您所做的是将文字字符串存储在定义的局部变量中。当shell对它们进行标记以进行评估时,它已将其理解为变量赋值可怕的错误!它理解的是local名称中的currentBranch变量设置为值git并尝试运行rev-list作为命令,它无法在其标准路径列表中明显找到(在$PATH下)

© www.soinside.com 2019 - 2024. All rights reserved.