1

我正在尝试将值加入数组中,用逗号分隔。我找到了问题的答案,但我不明白解决方案的最后一行在做什么。这是代码:

#!/bin/bash
foo=('foo bar' 'foo baz' 'bar baz')
bar=$(printf ",%s" "${foo[@]}")
bar=${bar:1}

我假设最后一行是这样,所以最后一个元素值上没有逗号。但是……它是怎么做到的?那个结肠在做什么?

4

2 回答 2

1

${bar:1}扩展为 的子字符串bar,从字符 #1(这是第二个字符,因为计数从零开始)开始,一直到字符串的末尾。所以bar=${bar:1}bar.

(有关更多信息,请参阅Bash 参考手册的第 3.5.3 节“Shell 参数扩展”中的描述。)${parameter:offset}

于 2013-08-17T20:40:06.677 回答
1

:is 子串扩展。它从指定的偏移量开始扩展参数的子字符串。从手册页

${parameter:offset}
${parameter:offset:length}
子串扩展。扩展到最多从 指定的length字符parameter开始的字符offset。如果length省略,则扩展为parameter从 指定的字符开始的子字符串offset。...

于 2013-08-17T20:40:21.527 回答