【发布时间】:2021-03-10 23:57:17
【问题描述】:
我有这个命令,在比较两个不同的 git 分支时,它给了我一个目录列表:
git diff test production --name-only | awk -F'/' 'NF!=1{print $1}' | sort -u
k8s
postgres
scripts
我想遍历它返回的值(在本例中为 k8s、postgres 和 scripts)。
我不知道如何将这些值转换为数组。我尝试了几件事:
changedServices=$(git diff test production --name-only | awk -F'/' 'NF!=1{print $1}' | sort -u)
它只是将其视为多行字符串。
以及以下带有错误消息的...
declare -a changedServices=$(git diff test production --name-only | awk -F'/' 'NF!=1{print $1}' | sort -u)
declare: changedServices: inconsistent type for assignment
我将如何将此列表解析为数组?
【问题讨论】:
-
Bash 还是 zsh?您所指的答案是 zsh 特定的。
-
@BenjaminW。最终,这将在 CI/CD 管道中结束,并简要查看 Azure DevOps Pipeline 文档,我看不到任何关于它使用
zsh命令的信息。所以这很可能需要bash。 -
那么
mapfile答案应该可以工作:)