bash substring - 结合命令和切片

时间:2014-10-11 11:04:23

标签: bash substring

我想获得最新git commit hash的前8个字符。要检索git HEAD哈希,我使用git rev-parse HEAD。我发现here我可以使用${string:position:length}获取子字符串。但我不知道如何将它们两者结合起来(如果可能的话,在单行中)。我的尝试

${"`git rev-parse HEAD`":0:8}

错了。

3 个答案:

答案 0 :(得分:4)

您无法通过调用其中的命令来组合BASH substring指令:

相反,您可以使用:

head=$(git rev-parse HEAD | cut -c1-8)

或者旧的faishon 2步骤:

head=$(git rev-parse HEAD)
head=${head:0:8}

答案 1 :(得分:0)

使用sed

git rev-parse HEAD | sed 's/^\(.\{,8\}\).*$/\1/g'

答案 2 :(得分:0)

out=`git rev-parse HEAD`
sub=${out:0:8}

example:
a="hello"
b=${a:0:3}
bash-3.2$ echo $b
hel

它是一个两步过程,首先提取git命令的输出,这是一个字符串。 ${string:pos:len将从长度为len

的pos返回子字符串