我有以下代码:
commit_hashes_raw=(`git cherry origin/Server_Dev`)
echo ${#commit_hashes_raw[@]}
echo ${commit_hashes_raw[@]}
产生以下输出:
2
+ 6f0de9d07538db5d6428acd083c4a4527751596b
第一行应该是数组的大小,第二行是内容。这里显而易见的问题是两个值之间的差异。我在另一个数据集上运行它,并且50行元素正在由中间行报告为100个元素长。
我是否使用错误的方法来查找尺寸,或者我的阵列中有什么时髦的东西?
答案 0 :(得分:3)
你的数组有两个元素 - +
然后是哈希。从命令输出设置数组时,元素是以空格分隔的,而不是换行符。
你可以这样做:
commit_hashes_raw=($(git cherry origin/Server_Dev | awk '{print $NF}'))
或者,如果没有调出shell,效率会有所提高:
commit_hashes_raw=()
while read plus hash; do
commit_hashes_raw+=("$hash")
done < <(git cherry origin/Server_Dev)
答案 1 :(得分:1)
在我看来,+
符号正在为数组添加额外的元素。您可以在创建阵列时尝试过滤掉它们。类似的东西:
commit_hashes_raw=(`git cherry origin/Server_Dev | cut -d' ' -f2`)