有人知道${1:1}
bash 中的含义吗?
例如:
for (( i=0; $i < ${1:1}; i++ ))
do
addToList $2
done
Run Code Online (Sandbox Code Playgroud)
那是 bash参数扩展。
\n具体来说:
\n\n\nRun Code Online (Sandbox Code Playgroud)\n${parameter:offset}\n${parameter:offset:length}\n
这称为子串扩展。它从 offset 指定的字符开始扩展到参数值的 length 个字符。如果参数为\xe2\x80\x98@\xe2\x80\x99,则为下标为\xe2\x80\x98@\xe2\x80\x99或\xe2\x80\x98*\xe2\x80\x99的索引数组,或关联数组名称,结果会有所不同,如下所述。如果省略 length,则扩展为参数值的子字符串,从 offset 指定的字符开始,一直延伸到值的末尾。length 和 offset 是算术表达式(参见 Shell 算术)。
\n以下是一些说明参数和下标数组的子字符串扩展的示例:
\nRun Code Online (Sandbox Code Playgroud)\n$ string=01234567890abcdefgh\n$ echo ${string:7}\n7890abcdefgh\n
因此,从1 未指定的第二个字符${1:1}
(1
offset
length
)
据推测,这是为了支持采用如下参数的脚本:
\n./addn -10 A\n
Run Code Online (Sandbox Code Playgroud)\n将十个A
元素添加到addToList
正在添加的内容中。
尽管这是一种糟糕的处理方式,除非在此之前已经检查过论证的有效性/合理性。
\n